diff options
Diffstat (limited to 'test/CodeGen/lifetime-debuginfo-2.c')
-rw-r--r-- | test/CodeGen/lifetime-debuginfo-2.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/test/CodeGen/lifetime-debuginfo-2.c b/test/CodeGen/lifetime-debuginfo-2.c new file mode 100644 index 000000000000..03afbd8c18b7 --- /dev/null +++ b/test/CodeGen/lifetime-debuginfo-2.c @@ -0,0 +1,29 @@ +// RUN: %clang_cc1 -O1 -triple x86_64-none-linux-gnu -emit-llvm -gline-tables-only %s -o - | FileCheck %s + +// Inserting lifetime markers should not affect debuginfo: lifetime.end is not +// a destructor, but instrumentation for the compiler. Ensure the debug info for +// the return statement (in the IR) does not point to the function closing '}' +// which is used to show some destructors have been called before leaving the +// function. + +extern int f(int); +extern int g(int); + +// CHECK-LABEL: define i32 @test +int test(int a, int b) { + int res; + + if (a==2) { + int r = f(b); + res = r + b; + a += 2; + } else { + int r = f(a); + res = r + a; + b += 1; + } + + return res; +// CHECK: ret i32 %{{.*}}, !dbg [[DI:![0-9]+]] +// CHECK: [[DI]] = !DILocation(line: [[@LINE-2]] +} |