diff options
author | Adrian Prantl <aprantl@apple.com> | 2014-12-22 22:26:00 +0000 |
---|---|---|
committer | Adrian Prantl <aprantl@apple.com> | 2014-12-22 22:26:00 +0000 |
commit | a47ace59019721411307ab06eea5b7796cb3dd3e (patch) | |
tree | dc6af538507f68993a92ef695329c47f0dbca13a /libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp | |
parent | 5aabc06c16391fda6424f99fd9a0dad74b1187b4 (diff) | |
download | bcm5719-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