[PATCH] D16867: Debug Info: Allow SROAed complex floating point types to be described by constants

Paul Robinson via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 3 15:57:42 PST 2016

probinson added a comment.

Do we test Complex anywhere else?  I'm not getting any hits in test/DebugInfo/*.

Comment at: test/DebugInfo/ARM/sroa-complex.ll:16
@@ +15,3 @@
+  ; CHECK: DW_TAG_formal_parameter
+  ; CHECK-NEXT:  DW_AT_const_value [DW_FORM_udata]	(0)
+  tail call void @llvm.dbg.value(metadata i64 0, i64 0, metadata !10, metadata !18), !dbg !17
Huh. So we see udata (0) because the zero value is considered as an integer type rather than a float type? And that's supposed to be the entire 128-bit value?
I wonder if something else weird is going on with _Complex, because on Linux I get DW_AT_location with an expression that describes only one 8-byte piece.

Comment at: test/DebugInfo/ARM/sroa-complex.ll:50
@@ +49,3 @@
+!15 = !{!"clang version 3.9.0 (trunk 259428)"}
+!16 = !DIExpression()
+!17 = !DILocation(line: 1, scope: !4)
This looks funny, and I don't see a reference to !16 anywhere? Is this possibly the missing other half of the _Complex value?



More information about the llvm-commits mailing list