diff options
author | Ted Kremenek <kremenek@apple.com> | 2009-05-02 01:49:13 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2009-05-02 01:49:13 +0000 |
commit | 49805454e662e44b5b61a9520e9437fa7f374dae (patch) | |
tree | c123513db8820ec30d42c8d9b9341dc8f564c027 /clang/lib | |
parent | e6b424e53a0808f068d09eede0f9a73b8d9f30ff (diff) | |
download | bcm5719-llvm-49805454e662e44b5b61a9520e9437fa7f374dae.tar.gz bcm5719-llvm-49805454e662e44b5b61a9520e9437fa7f374dae.zip |
Add CFG support for @synchronized. This fixes <rdar://problem/6848820>.
llvm-svn: 70620
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/AST/CFG.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/clang/lib/AST/CFG.cpp b/clang/lib/AST/CFG.cpp index e601d4ff69e..f5b604554d8 100644 --- a/clang/lib/AST/CFG.cpp +++ b/clang/lib/AST/CFG.cpp @@ -140,9 +140,7 @@ public: // a 'return'. CFGBlock* VisitObjCAtThrowStmt(ObjCAtThrowStmt* S); - CFGBlock* VisitObjCAtSynchronizedStmt(ObjCAtSynchronizedStmt* S){ - return NYS(); - } + CFGBlock* VisitObjCAtSynchronizedStmt(ObjCAtSynchronizedStmt* S); // Blocks. CFGBlock* VisitBlockExpr(BlockExpr* E) { return NYS(); } @@ -935,6 +933,16 @@ CFGBlock* CFGBuilder::VisitObjCForCollectionStmt(ObjCForCollectionStmt* S) { return addStmt(S->getCollection()); } +CFGBlock* CFGBuilder::VisitObjCAtSynchronizedStmt(ObjCAtSynchronizedStmt* S) { + // FIXME: Add locking 'primitives' to CFG for @synchronized. + + // Inline the body. + Visit(S->getSynchBody()); + + // Inline the sync expression. + return Visit(S->getSynchExpr()); +} + CFGBlock* CFGBuilder::VisitObjCAtTryStmt(ObjCAtTryStmt* S) { return NYS(); } |