diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2015-01-18 16:23:48 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2015-01-18 16:23:48 +0000 |
commit | 06d4ba388873e6d1cfa9cd715a8935ecc8cd2097 (patch) | |
tree | 3eb853da77d46cc77c4b017525a422f9ddb1385b /test/CodeGenCXX/debug-info-line-if.cpp | |
parent | 30d791273d07fac9c0c1641a0731191bca6e8606 (diff) |
Notes
Diffstat (limited to 'test/CodeGenCXX/debug-info-line-if.cpp')
-rw-r--r-- | test/CodeGenCXX/debug-info-line-if.cpp | 65 |
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 e14090f03f984..d0205af92bf4f 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: !{{.*}}) } |