[SelectionDAG] DbgValue nodes aren't transferred


I have a problem that dbg_value nodes are not transferred when integer DAG nodes are promoted. For example, an i32 add node is promoted to a i64 add node by DAGTypeLegalizer::PromoteIntegerResult and its dbg_value node is not transferred to the new node.

t9: i32 = add nsw t5, t8 à t31: i64 = add t30, t7 ; the dbg_value node is not transferred to the new i64 add node.

For expansion, DAGTypeLegalizer::SetExpandedInteger calls transferDbgValues() but I couldn’t find any place to call trasnferDbgValues() for integer type promotion in DAGTypeLegalizer ::SetPromotedInteger and other places. I am wondering If I miss anything or the legalization needs to call transferDbgValues() for this case.

I found this problem because a recently added unittest, DebugInfo/Generic/linear-dbg-value.ll fails for my project, and the x86 and aarch64 backends don’t have this problem since they don’t promote i32 add nodes.