diff options
author | Jordan Rose <jordan_rose@apple.com> | 2012-10-11 17:02:00 +0000 |
---|---|---|
committer | Jordan Rose <jordan_rose@apple.com> | 2012-10-11 17:02:00 +0000 |
commit | f1c1ba089cd8930c1193fcd20fb38cab834a8f94 (patch) | |
tree | f5db50310acaa8ad9f26e57e296c11f82166700b | |
parent | 7da46f949f6ec63d7c7dcda5f49588261c669ffb (diff) |
-Warc-repeated-use-of-weak: fix a use-of-uninitialized and add a test case.
Fix-up for r165718, should get the buildbots back online.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165723 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Sema/ScopeInfo.cpp | 2 | ||||
-rw-r--r-- | test/SemaObjC/arc-repeated-weak.mm | 12 |
2 files changed, 13 insertions, 1 deletions
diff --git a/lib/Sema/ScopeInfo.cpp b/lib/Sema/ScopeInfo.cpp index c1d6629905..4d29a34a73 100644 --- a/lib/Sema/ScopeInfo.cpp +++ b/lib/Sema/ScopeInfo.cpp @@ -159,7 +159,7 @@ void FunctionScopeInfo::markSafeWeakUse(const Expr *E) { Uses = WeakObjectUses.find(WeakObjectProfileTy(IvarE)); else if (const DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(E)) Uses = WeakObjectUses.find(WeakObjectProfileTy(DRE)); - else if (const ObjCMessageExpr *MsgE = dyn_cast<ObjCMessageExpr>(MsgE)) { + else if (const ObjCMessageExpr *MsgE = dyn_cast<ObjCMessageExpr>(E)) { Uses = WeakObjectUses.end(); if (const ObjCMethodDecl *MD = MsgE->getMethodDecl()) { if (const ObjCPropertyDecl *Prop = MD->findPropertyDecl()) { diff --git a/test/SemaObjC/arc-repeated-weak.mm b/test/SemaObjC/arc-repeated-weak.mm index a59f435693..1539a9bcae 100644 --- a/test/SemaObjC/arc-repeated-weak.mm +++ b/test/SemaObjC/arc-repeated-weak.mm @@ -181,6 +181,18 @@ void assignToStrongWithCasts(Test *a) { } } +void assignToStrongWithMessages(Test *a) { + if (condition()) { + id val = [a weakProp]; // no-warning + (void)val; + } else { + id val; + val = [a weakProp]; // no-warning + (void)val; + } +} + + void assignAfterRead(Test *a) { // Special exception for a single read before any writes. if (!a.weakProp) // no-warning |