summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen/debug-label-inline.c
diff options
context:
space:
mode:
authorHsiangkai Wang <hsiangkai@gmail.com>2018-09-06 06:03:36 +0000
committerHsiangkai Wang <hsiangkai@gmail.com>2018-09-06 06:03:36 +0000
commit0a875b2f15b1285d36d1d9ce92404f75bd10e99a (patch)
tree3b3fb143048c6ecc8166d0b8f4cf1dfcfd762c13 /clang/test/CodeGen/debug-label-inline.c
parent02f097e122cd7d83753e27c5ce0e6cd3c610eef4 (diff)
downloadbcm5719-llvm-0a875b2f15b1285d36d1d9ce92404f75bd10e99a.tar.gz
bcm5719-llvm-0a875b2f15b1285d36d1d9ce92404f75bd10e99a.zip
[DebugInfo] Generate debug information for labels. (Fix PR37395)
Generate DILabel metadata and call llvm.dbg.label after label statement to associate the metadata with the label. After fixing PR37395. After fixing problems in LiveDebugVariables. Differential Revision: https://reviews.llvm.org/D45045 llvm-svn: 341519
Diffstat (limited to 'clang/test/CodeGen/debug-label-inline.c')
-rw-r--r--clang/test/CodeGen/debug-label-inline.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/clang/test/CodeGen/debug-label-inline.c b/clang/test/CodeGen/debug-label-inline.c
new file mode 100644
index 00000000000..c0b089aad8e
--- /dev/null
+++ b/clang/test/CodeGen/debug-label-inline.c
@@ -0,0 +1,28 @@
+// This test will test the correctness of generating DILabel and
+// llvm.dbg.label when the label is in inlined functions.
+//
+// RUN: %clang_cc1 -O2 %s -o - -emit-llvm -debug-info-kind=limited | FileCheck %s
+inline int f1(int a, int b) {
+ int sum;
+
+top:
+ sum = a + b;
+ return sum;
+}
+
+extern int ga, gb;
+
+int f2(void) {
+ int result;
+
+ result = f1(ga, gb);
+ // CHECK: call void @llvm.dbg.label(metadata [[LABEL_METADATA:!.*]]), !dbg [[LABEL_LOCATION:!.*]]
+
+ return result;
+}
+
+// CHECK: distinct !DISubprogram(name: "f1", {{.*}}, retainedNodes: [[ELEMENTS:!.*]])
+// CHECK: [[ELEMENTS]] = !{{{.*}}, [[LABEL_METADATA]]}
+// CHECK: [[LABEL_METADATA]] = !DILabel({{.*}}, name: "top", {{.*}}, line: 8)
+// CHECK: [[INLINEDAT:!.*]] = distinct !DILocation(line: 18,
+// CHECK: [[LABEL_LOCATION]] = !DILocation(line: 8, {{.*}}, inlinedAt: [[INLINEDAT]])
OpenPOWER on IntegriCloud