diff options
Diffstat (limited to 'clang/test/CodeGen/debug-info-no-inline-line-tables.c')
-rw-r--r-- | clang/test/CodeGen/debug-info-no-inline-line-tables.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/clang/test/CodeGen/debug-info-no-inline-line-tables.c b/clang/test/CodeGen/debug-info-no-inline-line-tables.c new file mode 100644 index 00000000000..ac9216247c8 --- /dev/null +++ b/clang/test/CodeGen/debug-info-no-inline-line-tables.c @@ -0,0 +1,31 @@ +// RUN: %clang_cc1 -triple x86_64-windows-msvc -debug-info-kind=limited \ +// RUN: -gno-inline-line-tables -emit-llvm -o - %s | FileCheck %s +// RUN: %clang -gno-inline-line-tables -S -emit-llvm -o - %s | FileCheck %s \ +// RUN: -check-prefix=INLINE-FLAG +// RUN: %clang -S -emit-llvm -o - %s | FileCheck %s -check-prefix=NO-FLAG + +int x; +__attribute((always_inline)) void f() { + x += 1; +} +int main() { + f(); + x += 2; + return x; +} + +// Check that clang emits the location of the call site and not the inlined +// function in the debug info. +// CHECK: define dso_local i32 @main() +// CHECK: %{{.+}} = load i32, i32* @x, align 4, !dbg [[DbgLoc:![0-9]+]] + +// Check that the no-inline-line-tables attribute is added. +// CHECK: attributes #0 = {{.*}}"no-inline-line-tables"{{.*}} +// CHECK: attributes #1 = {{.*}}"no-inline-line-tables"{{.*}} + +// CHECK: [[DbgLoc]] = !DILocation(line: 12, +// CHECK-NOT: inlinedAt: + +// INLINE-FLAG: attributes #0 = {{.*}}"no-inline-line-tables"{{.*}} +// INLINE-FLAG: attributes #1 = {{.*}}"no-inline-line-tables"{{.*}} +// NO-FLAG-NOT: "no-inline-line-tables" |