diff options
author | David Blaikie <dblaikie@gmail.com> | 2014-08-22 22:25:37 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2014-08-22 22:25:37 +0000 |
commit | 7bc2da19e7b148a233038e7c8b615aaa4993f3f4 (patch) | |
tree | 14b3d66dfb200f9363ccae46cd3fd10ec0429783 | |
parent | 109ce69e756a03ccbbfa7d56267d1dd8282f16c7 (diff) | |
download | bcm5719-llvm-7bc2da19e7b148a233038e7c8b615aaa4993f3f4.tar.gz bcm5719-llvm-7bc2da19e7b148a233038e7c8b615aaa4993f3f4.zip |
DebugInfo: for loop backedge should be attributed to the start of the for statement.
Similar to r215768 (which fixed the same case for while loops). To quote
r215768's commit message:
"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: 216297
-rw-r--r-- | clang/lib/CodeGen/CGStmt.cpp | 2 | ||||
-rw-r--r-- | clang/test/CodeGenCXX/debug-info-line-if.cpp | 12 |
2 files changed, 14 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGStmt.cpp b/clang/lib/CodeGen/CGStmt.cpp index 6912378cadf..d8681d480f4 100644 --- a/clang/lib/CodeGen/CGStmt.cpp +++ b/clang/lib/CodeGen/CGStmt.cpp @@ -894,6 +894,8 @@ void CodeGenFunction::EmitForStmt(const ForStmt &S, BreakContinueStack.pop_back(); ConditionScope.ForceCleanup(); + + EmitStopPoint(&S); EmitBranch(CondBlock); ForScope.ForceCleanup(); diff --git a/clang/test/CodeGenCXX/debug-info-line-if.cpp b/clang/test/CodeGenCXX/debug-info-line-if.cpp index 1ebe51cee5e..6319993b14b 100644 --- a/clang/test/CodeGenCXX/debug-info-line-if.cpp +++ b/clang/test/CodeGenCXX/debug-info-line-if.cpp @@ -26,6 +26,18 @@ int main() { // 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:!.*]] + // CHECK: [[DBG1]] = metadata !{i32 100, i32 0, metadata !{{.*}}, null} // CHECK: [[DBG2]] = metadata !{i32 200, i32 0, metadata !{{.*}}, null} + // CHECK: [[DBG3]] = metadata !{i32 300, i32 0, metadata !{{.*}}, null} } |