summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2009-05-02 01:49:13 +0000
committerTed Kremenek <kremenek@apple.com>2009-05-02 01:49:13 +0000
commit49805454e662e44b5b61a9520e9437fa7f374dae (patch)
treec123513db8820ec30d42c8d9b9341dc8f564c027 /clang/lib
parente6b424e53a0808f068d09eede0f9a73b8d9f30ff (diff)
downloadbcm5719-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.cpp14
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();
}
OpenPOWER on IntegriCloud