From da5348eda7bb45d715561249dec9833d51dfda67 Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Tue, 5 May 2009 23:11:51 +0000 Subject: [PATCH] source-level CFG: have the body for the @synchronized start with its own basic block. This makes it a little easier for diagnostics generation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71037 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/AST/CFG.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/AST/CFG.cpp b/lib/AST/CFG.cpp index f5b604554d..af2a8910d8 100644 --- a/lib/AST/CFG.cpp +++ b/lib/AST/CFG.cpp @@ -937,7 +937,18 @@ CFGBlock* CFGBuilder::VisitObjCAtSynchronizedStmt(ObjCAtSynchronizedStmt* S) { // FIXME: Add locking 'primitives' to CFG for @synchronized. // Inline the body. - Visit(S->getSynchBody()); + CFGBlock *SyncBlock = Visit(S->getSynchBody()); + + // The sync body starts its own basic block. This makes it a little easier + // for diagnostic clients. + if (SyncBlock) { + if (!FinishBlock(SyncBlock)) + return 0; + + Block = 0; + } + + Succ = SyncBlock; // Inline the sync expression. return Visit(S->getSynchExpr()); -- 2.50.1