From c70a54366e88bbea63ddde3805f870f837673a7f Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Sat, 10 May 2014 17:40:11 +0000 Subject: Objective-C ARC. Add support for toll-free bridge type ,and bridge attribute, checking with static_cast. // rdar://16756639 llvm-svn: 208474 --- clang/lib/Sema/SemaExprObjC.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'clang/lib/Sema/SemaExprObjC.cpp') diff --git a/clang/lib/Sema/SemaExprObjC.cpp b/clang/lib/Sema/SemaExprObjC.cpp index d388a4b82e5..bf8af293773 100644 --- a/clang/lib/Sema/SemaExprObjC.cpp +++ b/clang/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, -- cgit v1.2.3