summaryrefslogtreecommitdiffstats
path: root/clang/lib/ARCMigrate/TransProperties.cpp
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2011-11-28 00:23:12 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2011-11-28 00:23:12 +0000
commit3fc3dcd80f34cc6750be06fa546c08df0d03652c (patch)
treebf7de9ddbbecc24b40d6b58580cfe94ce7225a7e /clang/lib/ARCMigrate/TransProperties.cpp
parent1424b308c3c82acce5e23a1bcd0efbfa6dbd0349 (diff)
downloadbcm5719-llvm-3fc3dcd80f34cc6750be06fa546c08df0d03652c.tar.gz
bcm5719-llvm-3fc3dcd80f34cc6750be06fa546c08df0d03652c.zip
[arcmt] Don't add __weak if there is already a GC __weak and make sure to clear
__weak from a readonly property. llvm-svn: 145210
Diffstat (limited to 'clang/lib/ARCMigrate/TransProperties.cpp')
-rw-r--r--clang/lib/ARCMigrate/TransProperties.cpp18
1 files changed, 12 insertions, 6 deletions
diff --git a/clang/lib/ARCMigrate/TransProperties.cpp b/clang/lib/ARCMigrate/TransProperties.cpp
index 0686dd3c2e3..8136b31d812 100644
--- a/clang/lib/ARCMigrate/TransProperties.cpp
+++ b/clang/lib/ARCMigrate/TransProperties.cpp
@@ -237,9 +237,12 @@ private:
canUseWeak = false;
for (PropsTy::iterator I = props.begin(), E = props.end(); I != E; ++I) {
- if (isUserDeclared(I->IvarD))
- Pass.TA.insert(I->IvarD->getLocation(),
- canUseWeak ? "__weak " : "__unsafe_unretained ");
+ if (isUserDeclared(I->IvarD)) {
+ if (I->IvarD &&
+ I->IvarD->getType().getObjCLifetime() != Qualifiers::OCL_Weak)
+ Pass.TA.insert(I->IvarD->getLocation(),
+ canUseWeak ? "__weak " : "__unsafe_unretained ");
+ }
if (I->ImplD)
Pass.TA.clearDiagnostic(diag::err_arc_assign_property_ownership,
I->ImplD->getLocation());
@@ -257,9 +260,12 @@ private:
canUseWeak = false;
for (PropsTy::iterator I = props.begin(), E = props.end(); I != E; ++I) {
- if (isUserDeclared(I->IvarD))
- Pass.TA.insert(I->IvarD->getLocation(),
- canUseWeak ? "__weak " : "__unsafe_unretained ");
+ if (isUserDeclared(I->IvarD)) {
+ if (I->IvarD &&
+ I->IvarD->getType().getObjCLifetime() != Qualifiers::OCL_Weak)
+ Pass.TA.insert(I->IvarD->getLocation(),
+ canUseWeak ? "__weak " : "__unsafe_unretained ");
+ }
if (I->ImplD) {
Pass.TA.clearDiagnostic(diag::err_arc_assign_property_ownership,
I->ImplD->getLocation());
OpenPOWER on IntegriCloud