diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2014-05-10 17:40:11 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2014-05-10 17:40:11 +0000 |
commit | 5225cc82e1ddbe8ef48de1c58efe3a4c0c643336 (patch) | |
tree | fee78cf8662fffe7b61becd3e14633be3eb68eb4 /lib/Sema/SemaExprObjC.cpp | |
parent | 7885a53309f153a229b1e8445b877be841a29ef9 (diff) | |
download | clang-5225cc82e1ddbe8ef48de1c58efe3a4c0c643336.tar.gz clang-5225cc82e1ddbe8ef48de1c58efe3a4c0c643336.tar.bz2 clang-5225cc82e1ddbe8ef48de1c58efe3a4c0c643336.tar.xz |
Objective-C ARC. Add support for toll-free bridge
type ,and bridge attribute, checking with static_cast.
// rdar://16756639
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208474 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaExprObjC.cpp')
-rw-r--r-- | lib/Sema/SemaExprObjC.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/Sema/SemaExprObjC.cpp b/lib/Sema/SemaExprObjC.cpp index d388a4b82e..bf8af29377 100644 --- a/lib/Sema/SemaExprObjC.cpp +++ b/lib/Sema/SemaExprObjC.cpp @@ -3413,6 +3413,22 @@ void Sema::CheckTollFreeBridgeCast(QualType castType, Expr *castExpr) { } } +bool Sema::CheckTollFreeBridgeStaticCast(QualType castType, Expr *castExpr, + CastKind &Kind) { + if (!getLangOpts().ObjC1) + return false; + ARCConversionTypeClass exprACTC = + classifyTypeForARCConversion(castExpr->getType()); + ARCConversionTypeClass castACTC = classifyTypeForARCConversion(castType); + if ((castACTC == ACTC_retainable && exprACTC == ACTC_coreFoundation) || + (castACTC == ACTC_coreFoundation && exprACTC == ACTC_retainable)) { + CheckTollFreeBridgeCast(castType, castExpr); + Kind = (castACTC == ACTC_coreFoundation) ? CK_BitCast + : CK_CPointerToObjCPointerCast; + return true; + } + return false; +} bool Sema::checkObjCBridgeRelatedComponents(SourceLocation Loc, QualType DestType, QualType SrcType, |