summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2014-08-22 22:25:37 +0000
committerDavid Blaikie <dblaikie@gmail.com>2014-08-22 22:25:37 +0000
commit7bc2da19e7b148a233038e7c8b615aaa4993f3f4 (patch)
tree14b3d66dfb200f9363ccae46cd3fd10ec0429783 /clang
parent109ce69e756a03ccbbfa7d56267d1dd8282f16c7 (diff)
downloadbcm5719-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
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/CodeGen/CGStmt.cpp2
-rw-r--r--clang/test/CodeGenCXX/debug-info-line-if.cpp12
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}
}
OpenPOWER on IntegriCloud