diff --git a/lib/CodeGen/CGStmt.cpp b/lib/CodeGen/CGStmt.cpp
index 970fdef17aa9fb6a075bcb5cbafb4641bba3655e..1395d60ab07d6251fdb9e79459fd70e4125bcf2a 100644
--- a/lib/CodeGen/CGStmt.cpp
+++ b/lib/CodeGen/CGStmt.cpp
@@ -730,6 +730,7 @@ void CodeGenFunction::EmitWhileStmt(const WhileStmt &S,
   // Immediately force cleanup.
   ConditionScope.ForceCleanup();
 
+  EmitStopPoint(&S);
   // Branch to the loop header again.
   EmitBranch(LoopHeader.getBlock());
 
diff --git a/test/CodeGenCXX/debug-info-line-if.cpp b/test/CodeGenCXX/debug-info-line-if.cpp
index 068e2a4a8c500803bb1a80ba1f254c433279e8fa..1ebe51cee5e1dcdfe95839f620811d568c37d474 100644
--- a/test/CodeGenCXX/debug-info-line-if.cpp
+++ b/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}
 }