diff --git a/lib/Analysis/BugReporter.cpp b/lib/Analysis/BugReporter.cpp
index 8a07cd0..77a83fe 100644
--- a/lib/Analysis/BugReporter.cpp
+++ b/lib/Analysis/BugReporter.cpp
@@ -823,7 +823,7 @@
         PrevLoc = PD.begin()->getLocation();
         
         if (const Stmt *S = PrevLoc.asStmt())
-          addContext(PDB.getEnclosingStmtLocation(S).asStmt());
+          addExtendedContext(PDB.getEnclosingStmtLocation(S).asStmt());
       }
   }
 
@@ -851,6 +851,7 @@
   void rawAddEdge(PathDiagnosticLocation NewLoc);
   
   void addContext(const Stmt *S);
+  void addExtendedContext(const Stmt *S);
 };  
 } // end anonymous namespace
 
@@ -992,6 +993,31 @@
   return false;
 }
   
+void EdgeBuilder::addExtendedContext(const Stmt *S) {
+  if (!S)
+    return;
+  
+  const Stmt *Parent = PDB.getParent(S);  
+  while (Parent) {
+    if (isa<CompoundStmt>(Parent))
+      Parent = PDB.getParent(Parent);
+    else
+      break;
+  }
+
+  if (Parent) {
+    switch (Parent->getStmtClass()) {
+      case Stmt::DoStmtClass:
+      case Stmt::ObjCAtSynchronizedStmtClass:
+        addContext(Parent);
+      default:
+        break;
+    }
+  }
+  
+  addContext(S);
+}
+  
 void EdgeBuilder::addContext(const Stmt *S) {
   if (!S)
     return;
@@ -1073,7 +1099,7 @@
          EB.addContext(S);
        }
        else
-         EB.addContext(PDB.getEnclosingStmtLocation(S).asStmt());
+         EB.addExtendedContext(PDB.getEnclosingStmtLocation(S).asStmt());
       }
 
       continue;
@@ -1088,7 +1114,7 @@
       EB.addEdge(Loc, true);
       PD.push_front(p);
       if (const Stmt *S = Loc.asStmt())
-        EB.addContext(PDB.getEnclosingStmtLocation(S).asStmt());      
+        EB.addExtendedContext(PDB.getEnclosingStmtLocation(S).asStmt());      
     }
   }
 }
