summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp
diff options
context:
space:
mode:
authorAdrian Prantl <aprantl@apple.com>2014-12-22 22:26:00 +0000
committerAdrian Prantl <aprantl@apple.com>2014-12-22 22:26:00 +0000
commita47ace59019721411307ab06eea5b7796cb3dd3e (patch)
treedc6af538507f68993a92ef695329c47f0dbca13a /libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp
parent5aabc06c16391fda6424f99fd9a0dad74b1187b4 (diff)
downloadbcm5719-llvm-a47ace59019721411307ab06eea5b7796cb3dd3e.tar.gz
bcm5719-llvm-a47ace59019721411307ab06eea5b7796cb3dd3e.zip
Debug info: Teach SROA how to update debug info for fragmented variables.
This allows us to generate debug info for extremely advanced code such as typedef struct { long int a; int b;} S; int foo(S s) { return s.b; } which at -O1 on x86_64 is codegen'd into define i32 @foo(i64 %s.coerce0, i32 %s.coerce1) #0 { ret i32 %s.coerce1, !dbg !24 } with this patch we emit the following debug info for this TAG_formal_parameter [3] AT_location( 0x00000000 0x0000000000000000 - 0x0000000000000006: rdi, piece 0x00000008, rsi, piece 0x00000004 0x0000000000000006 - 0x0000000000000008: rdi, piece 0x00000008, rax, piece 0x00000004 ) AT_name( "s" ) AT_decl_file( "/Volumes/Data/llvm/_build.ninja.release/test.c" ) Thanks to chandlerc, dblaikie, and echristo for their feedback on all previous iterations of this patch! llvm-svn: 224739
Diffstat (limited to 'libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud