Lines Matching refs:E
26 static Cl::Kinds ClassifyInternal(ASTContext &Ctx, const Expr *E);
29 static Cl::Kinds ClassifyMemberExpr(ASTContext &Ctx, const MemberExpr *E);
30 static Cl::Kinds ClassifyBinaryOp(ASTContext &Ctx, const BinaryOperator *E);
34 static Cl::ModifiableType IsModifiable(ASTContext &Ctx, const Expr *E,
89 const Expr *E, in ClassifyExprValueKind() argument
93 return Lang.CPlusPlus ? ClassifyTemporary(E->getType()) : Cl::CL_PRValue; in ClassifyExprValueKind()
102 static Cl::Kinds ClassifyInternal(ASTContext &Ctx, const Expr *E) { in ClassifyInternal() argument
106 switch (E->getStmtClass()) { in ClassifyInternal()
143 return Ctx.getLangOpts().CPlusPlus ? ClassifyTemporary(E->getType()) in ClassifyInternal()
191 cast<SubstNonTypeTemplateParmExpr>(E)->getReplacement()); in ClassifyInternal()
196 if (cast<ArraySubscriptExpr>(E)->getBase()->getType()->isVectorType()) in ClassifyInternal()
197 return ClassifyInternal(Ctx, cast<ArraySubscriptExpr>(E)->getBase()); in ClassifyInternal()
203 if (E->getType() == Ctx.UnknownAnyTy) in ClassifyInternal()
204 return isa<FunctionDecl>(cast<DeclRefExpr>(E)->getDecl()) in ClassifyInternal()
206 return ClassifyDecl(Ctx, cast<DeclRefExpr>(E)->getDecl()); in ClassifyInternal()
210 return ClassifyMemberExpr(Ctx, cast<MemberExpr>(E)); in ClassifyInternal()
213 switch (cast<UnaryOperator>(E)->getOpcode()) { in ClassifyInternal()
222 return ClassifyInternal(Ctx, cast<UnaryOperator>(E)->getSubExpr()); in ClassifyInternal()
228 const Expr *Op = cast<UnaryOperator>(E)->getSubExpr()->IgnoreParens(); in ClassifyInternal()
249 return ClassifyExprValueKind(Lang, E, E->getValueKind()); in ClassifyInternal()
253 return ClassifyExprValueKind(Lang, E, in ClassifyInternal()
254 cast<PseudoObjectExpr>(E)->getValueKind()); in ClassifyInternal()
259 return ClassifyExprValueKind(Lang, E, E->getValueKind()); in ClassifyInternal()
264 return ClassifyInternal(Ctx, cast<ParenExpr>(E)->getSubExpr()); in ClassifyInternal()
270 if (cast<GenericSelectionExpr>(E)->isResultDependent()) in ClassifyInternal()
272 return ClassifyInternal(Ctx,cast<GenericSelectionExpr>(E)->getResultExpr()); in ClassifyInternal()
278 return ClassifyBinaryOp(Ctx, cast<BinaryOperator>(E)); in ClassifyInternal()
286 return ClassifyUnnamed(Ctx, cast<CallExpr>(E)->getCallReturnType()); in ClassifyInternal()
290 return ClassifyInternal(Ctx, cast<ChooseExpr>(E)->getChosenSubExpr()); in ClassifyInternal()
295 if (cast<ExtVectorElementExpr>(E)->containsDuplicateElements()) in ClassifyInternal()
297 if (cast<ExtVectorElementExpr>(E)->isArrow()) in ClassifyInternal()
299 return ClassifyInternal(Ctx, cast<ExtVectorElementExpr>(E)->getBase()); in ClassifyInternal()
303 return ClassifyInternal(Ctx, cast<CXXDefaultArgExpr>(E)->getExpr()); in ClassifyInternal()
307 return ClassifyInternal(Ctx, cast<CXXDefaultInitExpr>(E)->getExpr()); in ClassifyInternal()
311 return ClassifyInternal(Ctx, cast<CXXBindTemporaryExpr>(E)->getSubExpr()); in ClassifyInternal()
315 return ClassifyInternal(Ctx, cast<ExprWithCleanups>(E)->getSubExpr()); in ClassifyInternal()
327 return ClassifyUnnamed(Ctx, cast<ExplicitCastExpr>(E)->getTypeAsWritten()); in ClassifyInternal()
331 cast<CXXUnresolvedConstructExpr>(E)->getTypeAsWritten()); in ClassifyInternal()
335 const BinaryConditionalOperator *co = cast<BinaryConditionalOperator>(E); in ClassifyInternal()
342 const ConditionalOperator *co = cast<ConditionalOperator>(E); in ClassifyInternal()
350 cast<ObjCMessageExpr>(E)->getMethodDecl()) { in ClassifyInternal()
364 return ClassifyUnnamed(Ctx, E->getType()); in ClassifyInternal()
367 return ClassifyInternal(Ctx, cast<DesignatedInitExpr>(E)->getInit()); in ClassifyInternal()
370 const CompoundStmt *S = cast<StmtExpr>(E)->getSubStmt(); in ClassifyInternal()
380 return ClassifyInternal(Ctx, cast<PackExpansionExpr>(E)->getPattern()); in ClassifyInternal()
383 return cast<MaterializeTemporaryExpr>(E)->isBoundToLvalueReference() in ClassifyInternal()
392 if (E->isRValue()) in ClassifyInternal()
393 return ClassifyExprValueKind(Lang, E, E->getValueKind()); in ClassifyInternal()
394 assert(cast<InitListExpr>(E)->getNumInits() == 1 && in ClassifyInternal()
396 return ClassifyInternal(Ctx, cast<InitListExpr>(E)->getInit(0)); in ClassifyInternal()
448 static Cl::Kinds ClassifyMemberExpr(ASTContext &Ctx, const MemberExpr *E) { in ClassifyMemberExpr() argument
449 if (E->getType() == Ctx.UnknownAnyTy) in ClassifyMemberExpr()
450 return (isa<FunctionDecl>(E->getMemberDecl()) in ClassifyMemberExpr()
458 if (E->isArrow()) in ClassifyMemberExpr()
461 Expr *Base = E->getBase()->IgnoreParens(); in ClassifyMemberExpr()
467 NamedDecl *Member = E->getMemberDecl(); in ClassifyMemberExpr()
485 if (E->isArrow()) in ClassifyMemberExpr()
487 Expr *Base = E->getBase()->IgnoreParenImpCasts(); in ClassifyMemberExpr()
490 return ClassifyInternal(Ctx, E->getBase()); in ClassifyMemberExpr()
505 static Cl::Kinds ClassifyBinaryOp(ASTContext &Ctx, const BinaryOperator *E) { in ClassifyBinaryOp() argument
510 if (E->isAssignmentOp()) in ClassifyBinaryOp()
511 return (E->getLHS()->getObjectKind() == OK_ObjCProperty in ClassifyBinaryOp()
516 if (E->getOpcode() == BO_Comma) in ClassifyBinaryOp()
517 return ClassifyInternal(Ctx, E->getRHS()); in ClassifyBinaryOp()
522 if (E->getOpcode() == BO_PtrMemD) in ClassifyBinaryOp()
523 return (E->getType()->isFunctionType() || in ClassifyBinaryOp()
524 E->hasPlaceholderType(BuiltinType::BoundMember)) in ClassifyBinaryOp()
526 : ClassifyInternal(Ctx, E->getLHS()); in ClassifyBinaryOp()
530 if (E->getOpcode() == BO_PtrMemI) in ClassifyBinaryOp()
531 return (E->getType()->isFunctionType() || in ClassifyBinaryOp()
532 E->hasPlaceholderType(BuiltinType::BoundMember)) in ClassifyBinaryOp()
561 static Cl::ModifiableType IsModifiable(ASTContext &Ctx, const Expr *E, in IsModifiable() argument
569 dyn_cast<ExplicitCastExpr>(E->IgnoreParens())) { in IsModifiable()
581 if (Ctx.getLangOpts().CPlusPlus && E->getType()->isFunctionType()) in IsModifiable()
586 if (const ObjCPropertyRefExpr *Expr = dyn_cast<ObjCPropertyRefExpr>(E)) { in IsModifiable()
591 CanQualType CT = Ctx.getCanonicalType(E->getType()); in IsModifiable()
607 assert((E->getObjectKind() == OK_ObjCProperty || in IsModifiable()