[llvm-commits] [llvm] r135172 - /llvm/trunk/lib/Transforms/Utils/ValueMapper.cpp

Chris Lattner clattner at apple.com
Thu Jul 14 13:28:36 PDT 2011


On Jul 14, 2011, at 1:12 PM, Devang Patel wrote:

>> +++ llvm/trunk/lib/Transforms/Utils/ValueMapper.cpp Thu Jul 14 13:53:50 2011
>> @@ -167,9 +167,10 @@
>>    }
>>  }
>> 
>> -  // Remap attached metadata.
>> +  // Remap attached metadata.  Don't bother remapping DebugLoc, it can never
>> +  // have mappings to do.
> 
> That's not true. llvm-ld attached two .ll files. You should only get two metadata entries for functions (DW_TAG_subprogram) after linking. If you get three, then mapping is broken during linking.

Thanks for the review Devang.  I'm pretty sure it's true (and only get two subprograms for your example) because the MDNodes backing the DebugLoc are uniqued at the LLVMContext level just like the two loaded modules.

After linking, I get:

$  llvm-link a.ll b.ll -S |& grep subpro
!2 = metadata !{i32 589870, i32 0, metadata !3, metadata !"foo", metadata !"foo", metadata !"", metadata !3, i32 2, metadata !4, i1 false, i1 true, i32 0, i32 0, i32 0, i32 0, i1 false, i32 ()* @foo, null, null} ; [ DW_TAG_subprogram ]
!7 = metadata !{i32 589870, i32 0, metadata !8, metadata !"bar", metadata !"bar", metadata !"", metadata !8, i32 1, metadata !9, i1 false, i1 true, i32 0, i32 0, i32 0, i32 0, i1 false, i32 ()* @bar, null, null} ; [ DW_TAG_subprogram ]

Linking the other way I get the same result:
$ llvm-link b.ll a.ll -S | & grep subpro
!2 = metadata !{i32 589870, i32 0, metadata !3, metadata !"bar", metadata !"bar", metadata !"", metadata !3, i32 1, metadata !4, i1 false, i1 true, i32 0, i32 0, i32 0, i32 0, i1 false, i32 ()* @bar, null, null} ; [ DW_TAG_subprogram ]
!7 = metadata !{i32 589870, i32 0, metadata !8, metadata !"foo", metadata !"foo", metadata !"", metadata !8, i32 2, metadata !9, i1 false, i1 true, i32 0, i32 0, i32 0, i32 0, i1 false, i32 ()* @foo, null, null} ; [ DW_TAG_subprogram ]

Am I missing something here?

-Chris




More information about the llvm-commits mailing list