diff --git a/clang/lib/Analysis/BugReporter.cpp b/clang/lib/Analysis/BugReporter.cpp
index a8cb6a9..6f6b3c1 100644
--- a/clang/lib/Analysis/BugReporter.cpp
+++ b/clang/lib/Analysis/BugReporter.cpp
@@ -641,7 +641,8 @@
           os << "Control jumps to line "
              << SMgr.getInstantiationLineNumber(S->getLocStart()) << ".\n";
           
-          PD.push_front(new PathDiagnosticPiece(L, os.str()));
+          PD.push_front(new PathDiagnosticPiece(L, os.str(), 
+                                             PathDiagnosticPiece::ControlFlow));
           break;
         }
           
@@ -709,7 +710,8 @@
             ExecutionContinues(os, SMgr, N, getStateManager().getCodeDecl());
           }
           
-          PD.push_front(new PathDiagnosticPiece(L, os.str()));
+          PD.push_front(new PathDiagnosticPiece(L, os.str(),
+                                             PathDiagnosticPiece::ControlFlow));
           break;
         }
           
@@ -718,7 +720,8 @@
           std::string sbuf;
           llvm::raw_string_ostream os(sbuf);
           ExecutionContinues(os, SMgr, N, getStateManager().getCodeDecl());
-          PD.push_front(new PathDiagnosticPiece(L, os.str()));
+          PD.push_front(new PathDiagnosticPiece(L, os.str(),
+                                            PathDiagnosticPiece::ControlFlow));
           break;
         }
 
@@ -732,7 +735,8 @@
           else
             os << "true.";
           
-          PD.push_front(new PathDiagnosticPiece(L, os.str()));          
+          PD.push_front(new PathDiagnosticPiece(L, os.str(),
+                                            PathDiagnosticPiece::ControlFlow));          
           break;
         }
           
@@ -745,11 +749,13 @@
             os << "Loop condition is true. ";
             ExecutionContinues(os, SMgr, N, getStateManager().getCodeDecl());
             
-            PD.push_front(new PathDiagnosticPiece(L, os.str()));
+            PD.push_front(new PathDiagnosticPiece(L, os.str(),
+                                             PathDiagnosticPiece::ControlFlow));
           }
           else
             PD.push_front(new PathDiagnosticPiece(L,
-                              "Loop condition is false.  Exiting loop."));
+                              "Loop condition is false.  Exiting loop.",
+                              PathDiagnosticPiece::ControlFlow));
           
           break;
         }
@@ -764,20 +770,24 @@
             os << "Loop condition is false. ";
             ExecutionContinues(os, SMgr, N, getStateManager().getCodeDecl());
 
-            PD.push_front(new PathDiagnosticPiece(L, os.str()));
+            PD.push_front(new PathDiagnosticPiece(L, os.str(),
+                                             PathDiagnosticPiece::ControlFlow));
           }
           else
             PD.push_front(new PathDiagnosticPiece(L,
-                            "Loop condition is true.  Entering loop body."));
+                            "Loop condition is true.  Entering loop body.",
+                            PathDiagnosticPiece::ControlFlow));
           
           break;
         }
           
         case Stmt::IfStmtClass: {          
           if (*(Src->succ_begin()+1) == Dst)
-            PD.push_front(new PathDiagnosticPiece(L, "Taking false branch."));
-          else 
-            PD.push_front(new PathDiagnosticPiece(L, "Taking true branch."));
+            PD.push_front(new PathDiagnosticPiece(L, "Taking false branch.",
+                            PathDiagnosticPiece::ControlFlow));
+          else  
+            PD.push_front(new PathDiagnosticPiece(L, "Taking true branch.",
+                            PathDiagnosticPiece::ControlFlow));
           
           break;
         }
