diff --git a/include/clang/Analysis/PathDiagnostic.h b/include/clang/Analysis/PathDiagnostic.h
index 3096859..731bb74 100644
--- a/include/clang/Analysis/PathDiagnostic.h
+++ b/include/clang/Analysis/PathDiagnostic.h
@@ -26,7 +26,7 @@
 
 class PathDiagnosticPiece {
 public:
-  enum Kind { ControlFlow, Event };
+  enum Kind { ControlFlow, Event, Macro };
   enum DisplayHint { Above, Below };
 
 private:
@@ -36,6 +36,7 @@
   const Kind kind;
   const DisplayHint Hint;
   std::vector<SourceRange> ranges;
+  std::vector<PathDiagnosticPiece*> SubPieces;
   
   // Do not implement:
   PathDiagnosticPiece();
@@ -44,15 +45,17 @@
   
 public:
   PathDiagnosticPiece(FullSourceLoc pos, const std::string& s,
-                      Kind k = Event,
-                      DisplayHint hint = Above);
+                      Kind k = Event, DisplayHint hint = Below);
   
   PathDiagnosticPiece(FullSourceLoc pos, const char* s,
-                      Kind k = Event,
-                      DisplayHint hint = Above);
+                      Kind k = Event, DisplayHint hint = Below);
+  
+  virtual ~PathDiagnosticPiece();
   
   const std::string& getString() const { return str; }
-   
+  
+  /// getDisplayHint - Return a hint indicating where the diagnostic should
+  ///  be displayed by the PathDiagnosticClient.
   DisplayHint getDisplayHint() const { return Hint; }
   
   Kind getKind() const { return kind; }
@@ -95,6 +98,24 @@
   FullSourceLoc getLocation() const { return Pos; }
 };
   
+class PathDiagnosticMacroPiece : public PathDiagnosticPiece {
+  std::vector<PathDiagnosticPiece*> SubPieces;  
+public:
+  PathDiagnosticMacroPiece(FullSourceLoc pos, const std::string& s)
+    : PathDiagnosticPiece(pos, s, Macro) {}
+  
+  PathDiagnosticMacroPiece(FullSourceLoc pos, const char* s)
+    : PathDiagnosticPiece(pos, s, Macro) {}
+  
+  ~PathDiagnosticMacroPiece();
+  
+  void push_back(PathDiagnosticPiece* P) { SubPieces.push_back(P); }
+  
+  typedef std::vector<PathDiagnosticPiece*>::iterator iterator;
+  iterator begin() { return SubPieces.begin(); }
+  iterator end() { return SubPieces.end(); }
+};
+  
 class PathDiagnostic {
   std::list<PathDiagnosticPiece*> path;
   unsigned Size;
diff --git a/lib/Analysis/PathDiagnostic.cpp b/lib/Analysis/PathDiagnostic.cpp
index 468b6c8..49af34d 100644
--- a/lib/Analysis/PathDiagnostic.cpp
+++ b/lib/Analysis/PathDiagnostic.cpp
@@ -49,6 +49,12 @@
          "PathDiagnosticPiece's must have a valid location.");
 }
 
+PathDiagnosticPiece::~PathDiagnosticPiece() {}
+
+PathDiagnosticMacroPiece::~PathDiagnosticMacroPiece() {
+  for (iterator I = begin(), E = end(); I != E; ++I) delete *I;
+}
+
 PathDiagnostic::PathDiagnostic() : Size(0) {}
 
 PathDiagnostic::~PathDiagnostic() {
