summaryrefslogtreecommitdiffstats
path: root/test/CodeGenCXX/debug-info-line-if.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGenCXX/debug-info-line-if.cpp')
-rw-r--r--test/CodeGenCXX/debug-info-line-if.cpp65
1 files changed, 50 insertions, 15 deletions
diff --git a/test/CodeGenCXX/debug-info-line-if.cpp b/test/CodeGenCXX/debug-info-line-if.cpp
index e14090f..d0205af 100644
--- a/test/CodeGenCXX/debug-info-line-if.cpp
+++ b/test/CodeGenCXX/debug-info-line-if.cpp
@@ -1,20 +1,55 @@
// RUN: %clang_cc1 -g -std=c++11 -S -emit-llvm %s -o - | FileCheck %s
// PR19864
+extern int v[2];
+int a = 0, b = 0;
int main() {
- int v[] = {13, 21, 8, 3, 34, 1, 5, 2};
- int a = 0, b = 0;
- for (int x : v)
- if (x >= 3)
- ++b; // CHECK: add nsw{{.*}}, 1
- else if (x >= 0)
- ++a; // CHECK: add nsw{{.*}}, 1
- // The continuation block if the if statement should not share the
- // location of the ++a statement. Having it point to the end of
- // the condition is not ideal either, but it's less missleading.
-
- // CHECK: br label
- // CHECK: br label
- // CHECK: br label {{.*}}, !dbg ![[DBG:.*]]
- // CHECK: ![[DBG]] = metadata !{i32 [[@LINE-11]], i32 0, metadata !{{.*}}, null}
+#line 100
+ for (int x : v)
+ if (x)
+ ++b; // CHECK: add nsw{{.*}}, 1
+ else
+ ++a; // CHECK: add nsw{{.*}}, 1
+ // The continuation block if the if statement should not share the
+ // location of the ++a statement. The branch back to the start of the loop
+ // should be attributed to the loop header line.
+ // CHECK: br label
+ // CHECK: br label
+ // CHECK: br label {{.*}}, !dbg [[DBG1:!.*]]
+
+#line 200
+ while (a)
+ if (b)
+ ++b; // CHECK: add nsw{{.*}}, 1
+ else
+ ++a; // CHECK: add nsw{{.*}}, 1
+
+ // CHECK: br label
+ // CHECK: br label {{.*}}, !dbg [[DBG2:!.*]]
+
+#line 300
+ for (; a; )
+ if (b)
+ ++b; // CHECK: add nsw{{.*}}, 1
+ else
+ ++a; // CHECK: add nsw{{.*}}, 1
+
+ // CHECK: br label
+ // CHECK: br label {{.*}}, !dbg [[DBG3:!.*]]
+
+#line 400
+ int x[] = {1, 2};
+ for (int y : x)
+ if (b)
+ ++b; // CHECK: add nsw{{.*}}, 1
+ else
+ ++a; // CHECK: add nsw{{.*}}, 1
+
+ // CHECK: br label
+ // CHECK: br label {{.*}}, !dbg [[DBG4:!.*]]
+
+ // CHECK: [[DBG1]] = !MDLocation(line: 100, scope: !{{.*}})
+ // CHECK: [[DBG2]] = !MDLocation(line: 200, scope: !{{.*}})
+ // CHECK: [[DBG3]] = !MDLocation(line: 300, scope: !{{.*}})
+ // CHECK: [[DBG4]] = !MDLocation(line: 401, scope: !{{.*}})
}
OpenPOWER on IntegriCloud