diff options
author | David Blaikie <dblaikie@gmail.com> | 2014-08-15 21:11:25 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2014-08-15 21:11:25 +0000 |
commit | 0c8e3f2fddaf868e99edb49dc75a8c74ee97bd6d (patch) | |
tree | f04015e2ac5d3c4e9eee01b7a3baaa91e4f44511 /clang/test/CodeGenCXX/debug-info-line-if.cpp | |
parent | 0ee846ff3cf30ef625d6f781020deb90ff16c9c4 (diff) | |
download | bcm5719-llvm-0c8e3f2fddaf868e99edb49dc75a8c74ee97bd6d.tar.gz bcm5719-llvm-0c8e3f2fddaf868e99edb49dc75a8c74ee97bd6d.zip |
DebugInfo: While loop backedge should be attribute to the start of the while statement.
A little test case simplification - this could be simplified further,
though there are certainly interesting connections to the if/else
construct so I'm hesitant to remove that entirely though it does appear
somewhat unrelated.
(similar fix to r215766, related to PR19864)
llvm-svn: 215768
Diffstat (limited to 'clang/test/CodeGenCXX/debug-info-line-if.cpp')
-rw-r--r-- | clang/test/CodeGenCXX/debug-info-line-if.cpp | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/clang/test/CodeGenCXX/debug-info-line-if.cpp b/clang/test/CodeGenCXX/debug-info-line-if.cpp index 068e2a4a8c5..1ebe51cee5e 100644 --- a/clang/test/CodeGenCXX/debug-info-line-if.cpp +++ b/clang/test/CodeGenCXX/debug-info-line-if.cpp @@ -1,20 +1,31 @@ // 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. The branch back to the start of the loop - // should be attributed to the loop header line. +#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 ![[DBG:.*]] - // CHECK: ![[DBG]] = metadata !{i32 [[@LINE-12]], i32 0, metadata !{{.*}}, null} + // 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:!.*]] + // CHECK: [[DBG1]] = metadata !{i32 100, i32 0, metadata !{{.*}}, null} + // CHECK: [[DBG2]] = metadata !{i32 200, i32 0, metadata !{{.*}}, null} } |