Fix an infinite loop in diagnostic printing.
 - The diagnostic is still poor, however. Doug, can you investigate?

 - Improved the test case to not depend on the file name, now it can
   be extended to actually check the formatting of the diagnostics
   (I'm hoping grep -A is portable here).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70807 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Frontend/TextDiagnosticPrinter.cpp b/lib/Frontend/TextDiagnosticPrinter.cpp
index 62446f3..9517160 100644
--- a/lib/Frontend/TextDiagnosticPrinter.cpp
+++ b/lib/Frontend/TextDiagnosticPrinter.cpp
@@ -168,8 +168,7 @@
     bool ExpandedRegion = false;
     // Move the start of the interesting region left until we've
     // pulled in something else interesting.
-    if (CaretStart && !StartIsFixed && 
-        CaretEnd - CaretStart < TargetColumns) {
+    if (CaretStart && !StartIsFixed) {
       unsigned NewStart = CaretStart;
         
       bool BadStart = false;
@@ -223,8 +222,7 @@
 
     // Move the end of the interesting region right until we've
     // pulled in something else interesting.
-    if (CaretEnd != SourceLength && 
-        CaretEnd - CaretStart < TargetColumns) {
+    if (CaretEnd != SourceLength) {
       unsigned NewEnd = CaretEnd;
 
       // Skip over any whitespace we see here; we're looking for
@@ -240,10 +238,10 @@
         CaretEnd = NewEnd;
         ExpandedRegion = true;
       }
-
-      if (!ExpandedRegion)
-        break;
     }
+
+    if (!ExpandedRegion)
+      break;
   }
 
   // [CaretStart, CaretEnd) is the slice we want. Update the various