| // RUN: %clang_cc1 -O1 -triple x86_64-none-linux-gnu -emit-llvm -debug-info-kind=line-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]] |
| } |