summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2012-01-31 22:09:44 +0000
committerFariborz Jahanian <fjahanian@apple.com>2012-01-31 22:09:44 +0000
commita1c1b152f09d90360043501f8c9dfcd07e4b509d (patch)
tree70b99c33449c973f747b44dd63c65788429ad27c
parenteedecf51bb43e4149b2aab42f559b7acb6e05997 (diff)
downloadbcm5719-llvm-a1c1b152f09d90360043501f8c9dfcd07e4b509d.tar.gz
bcm5719-llvm-a1c1b152f09d90360043501f8c9dfcd07e4b509d.zip
arc migrator: twik previous patch to exclude user provided
explicit type cast. // rdar://10521744 llvm-svn: 149437
-rw-r--r--clang/lib/ARCMigrate/TransUnbridgedCasts.cpp2
-rw-r--r--clang/test/ARCMT/no-canceling-bridge-to-bridge-cast.m4
2 files changed, 2 insertions, 4 deletions
diff --git a/clang/lib/ARCMigrate/TransUnbridgedCasts.cpp b/clang/lib/ARCMigrate/TransUnbridgedCasts.cpp
index 5650824c964..42a92edd4ea 100644
--- a/clang/lib/ARCMigrate/TransUnbridgedCasts.cpp
+++ b/clang/lib/ARCMigrate/TransUnbridgedCasts.cpp
@@ -136,7 +136,7 @@ private:
FD->getParent()->isTranslationUnit() &&
FD->getLinkage() == ExternalLinkage) {
Expr *Arg = callE->getArg(0);
- if (const CastExpr *ICE = dyn_cast<CastExpr>(Arg)) {
+ if (const ImplicitCastExpr *ICE = dyn_cast<ImplicitCastExpr>(Arg)) {
const Expr *sub = ICE->getSubExpr();
QualType T = sub->getType();
if (T->isObjCObjectPointerType())
diff --git a/clang/test/ARCMT/no-canceling-bridge-to-bridge-cast.m b/clang/test/ARCMT/no-canceling-bridge-to-bridge-cast.m
index e94e6574aeb..164b84b8923 100644
--- a/clang/test/ARCMT/no-canceling-bridge-to-bridge-cast.m
+++ b/clang/test/ARCMT/no-canceling-bridge-to-bridge-cast.m
@@ -33,9 +33,7 @@ CFTypeRef CFRetain(CFTypeRef cf);
// expected-note {{use __bridge to convert directly (no change in ownership)}} \
// expected-note {{use __bridge_transfer to transfer ownership of a +1 'CFTypeRef' (aka 'const void *') into ARC}}
- result = (id) CFRetain((CFTypeRef)((objc_format))); // expected-error {{cast of C pointer type 'CFTypeRef' (aka 'const void *') to Objective-C pointer type 'id' requires a bridged cast}} \
- // expected-note {{use __bridge to convert directly (no change in ownership)}} \
- // expected-note {{use __bridge_transfer to transfer ownership of a +1 'CFTypeRef' (aka 'const void *') into ARC}}
+ result = (id) CFRetain((CFTypeRef)((objc_format)));
result = (id) CFRetain(cf_format); // OK
}
OpenPOWER on IntegriCloud