Lines Matching refs:E
87 bool VisitCastExpr(CastExpr *E) { in VisitCastExpr() argument
88 if (E->getCastKind() != CK_CPointerToObjCPointerCast && in VisitCastExpr()
89 E->getCastKind() != CK_BitCast && in VisitCastExpr()
90 E->getCastKind() != CK_AnyPointerToBlockPointerCast) in VisitCastExpr()
93 QualType castType = E->getType(); in VisitCastExpr()
94 Expr *castExpr = E->getSubExpr(); in VisitCastExpr()
113 transformNonObjCToObjCCast(E); in VisitCastExpr()
115 transformObjCToNonObjCCast(E); in VisitCastExpr()
121 void transformNonObjCToObjCCast(CastExpr *E) { in transformNonObjCToObjCCast() argument
122 if (!E) return; in transformNonObjCToObjCCast()
125 if (isGlobalVar(E)) in transformNonObjCToObjCCast()
126 if (E->getSubExpr()->getType()->isPointerType()) { in transformNonObjCToObjCCast()
127 castToObjCObject(E, /*retained=*/false); in transformNonObjCToObjCCast()
133 Expr *inner = E->IgnoreParenCasts(); in transformNonObjCToObjCCast()
137 castToObjCObject(E, /*retained=*/true); in transformNonObjCToObjCCast()
141 castToObjCObject(E, /*retained=*/false); in transformNonObjCToObjCCast()
146 ento::cocoa::isRefType(E->getSubExpr()->getType(), "CF", in transformNonObjCToObjCCast()
166 castToObjCObject(E, /*retained=*/true); in transformNonObjCToObjCCast()
171 castToObjCObject(E, /*retained=*/false); in transformNonObjCToObjCCast()
184 isa<ReturnStmt>(StmtMap->getParentIgnoreParenCasts(E))) { in transformNonObjCToObjCCast()
187 castToObjCObject(E, /*retained=*/false); in transformNonObjCToObjCCast()
194 void castToObjCObject(CastExpr *E, bool retained) { in castToObjCObject() argument
195 rewriteToBridgedCast(E, retained ? OBC_BridgeTransfer : OBC_Bridge); in castToObjCObject()
198 void rewriteToBridgedCast(CastExpr *E, ObjCBridgeCastKind Kind) { in rewriteToBridgedCast() argument
200 rewriteToBridgedCast(E, Kind, Trans); in rewriteToBridgedCast()
203 void rewriteToBridgedCast(CastExpr *E, ObjCBridgeCastKind Kind, in rewriteToBridgedCast() argument
210 E->getBeginLoc())) { in rewriteToBridgedCast()
226 diag::err_arc_cast_requires_bridge, E->getBeginLoc()); in rewriteToBridgedCast()
228 if (CStyleCastExpr *CCE = dyn_cast<CStyleCastExpr>(E)) { in rewriteToBridgedCast()
231 SourceLocation insertLoc = E->getSubExpr()->getBeginLoc(); in rewriteToBridgedCast()
235 newCast += E->getType().getAsString(Pass.Ctx.getPrintingPolicy()); in rewriteToBridgedCast()
238 if (isa<ParenExpr>(E->getSubExpr())) { in rewriteToBridgedCast()
243 TA.insertAfterToken(E->getEndLoc(), ")"); in rewriteToBridgedCast()
250 Expr *WrapE = E->getSubExpr(); in rewriteToBridgedCast()
280 void getBlockMacroRanges(CastExpr *E, SourceRange &Outer, SourceRange &Inner) { in getBlockMacroRanges() argument
282 SourceLocation Loc = E->getExprLoc(); in getBlockMacroRanges()
285 SourceRange SubRange = E->getSubExpr()->IgnoreParenImpCasts()->getSourceRange(); in getBlockMacroRanges()
293 void rewriteBlockCopyMacro(CastExpr *E) { in rewriteBlockCopyMacro() argument
295 getBlockMacroRanges(E, OuterRange, InnerRange); in rewriteBlockCopyMacro()
306 void removeBlockReleaseMacro(CastExpr *E) { in removeBlockReleaseMacro() argument
308 getBlockMacroRanges(E, OuterRange, InnerRange); in removeBlockReleaseMacro()
314 if (!hasSideEffects(E, Pass.Ctx)) { in removeBlockReleaseMacro()
315 if (tryRemoving(cast<Expr>(StmtMap->getParentIgnoreParenCasts(E)))) in removeBlockReleaseMacro()
321 bool tryRemoving(Expr *E) const { in tryRemoving()
327 if (Removables->count(E)) { in tryRemoving()
328 Pass.TA.removeStmt(E); in tryRemoving()
335 void transformObjCToNonObjCCast(CastExpr *E) { in transformObjCToNonObjCCast() argument
336 SourceLocation CastLoc = E->getExprLoc(); in transformObjCToNonObjCCast()
342 rewriteBlockCopyMacro(E); in transformObjCToNonObjCCast()
346 removeBlockReleaseMacro(E); in transformObjCToNonObjCCast()
351 if (isSelf(E->getSubExpr())) in transformObjCToNonObjCCast()
352 return rewriteToBridgedCast(E, OBC_Bridge); in transformObjCToNonObjCCast()
355 if (isPassedToCFRetain(E, callE)) in transformObjCToNonObjCCast()
356 return rewriteCastForCFRetain(E, callE); in transformObjCToNonObjCCast()
358 ObjCMethodFamily family = getFamilyOfMessage(E->getSubExpr()); in transformObjCToNonObjCCast()
360 return rewriteToBridgedCast(E, OBC_BridgeRetained); in transformObjCToNonObjCCast()
364 err += E->getType().getAsString(Pass.Ctx.getPrintingPolicy()); in transformObjCToNonObjCCast()
369 Pass.TA.reportError(err, E->getBeginLoc(), in transformObjCToNonObjCCast()
370 E->getSubExpr()->getSourceRange()); in transformObjCToNonObjCCast()
371 Stmt *parent = E; in transformObjCToNonObjCCast()
379 note += E->getSubExpr()->getType().getAsString(Pass.Ctx.getPrintingPolicy()); in transformObjCToNonObjCCast()
385 Expr *subExpr = E->getSubExpr(); in transformObjCToNonObjCCast()
395 return rewriteToBridgedCast(E, OBC_BridgeRetained); in transformObjCToNonObjCCast()
397 return rewriteToBridgedCast(E, OBC_Bridge); in transformObjCToNonObjCCast()
401 if (isPassedToCParamWithKnownOwnership(E, isConsumed)) in transformObjCToNonObjCCast()
402 return rewriteToBridgedCast(E, isConsumed ? OBC_BridgeRetained in transformObjCToNonObjCCast()
406 static ObjCMethodFamily getFamilyOfMessage(Expr *E) { in getFamilyOfMessage() argument
407 E = E->IgnoreParenCasts(); in getFamilyOfMessage()
408 if (ObjCMessageExpr *ME = dyn_cast<ObjCMessageExpr>(E)) in getFamilyOfMessage()
414 bool isPassedToCFRetain(Expr *E, CallExpr *&callE) const { in isPassedToCFRetain() argument
416 StmtMap->getParentIgnoreParenImpCasts(E)))) in isPassedToCFRetain()
427 bool isPassedToCParamWithKnownOwnership(Expr *E, bool &isConsumed) const { in isPassedToCParamWithKnownOwnership() argument
429 StmtMap->getParentIgnoreParenImpCasts(E))) in isPassedToCParamWithKnownOwnership()
435 if (arg == E || arg->IgnoreParenImpCasts() == E) in isPassedToCParamWithKnownOwnership()
450 bool isSelf(Expr *E) const { in isSelf()
451 E = E->IgnoreParenLValueCasts(); in isSelf()
452 if (DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(E)) in isSelf()