Lines Matching refs:Ctx
26 static Cl::Kinds ClassifyInternal(ASTContext &Ctx, const Expr *E);
27 static Cl::Kinds ClassifyDecl(ASTContext &Ctx, const Decl *D);
28 static Cl::Kinds ClassifyUnnamed(ASTContext &Ctx, QualType T);
29 static Cl::Kinds ClassifyMemberExpr(ASTContext &Ctx, const MemberExpr *E);
30 static Cl::Kinds ClassifyBinaryOp(ASTContext &Ctx, const BinaryOperator *E);
31 static Cl::Kinds ClassifyConditional(ASTContext &Ctx,
34 static Cl::ModifiableType IsModifiable(ASTContext &Ctx, const Expr *E,
37 Cl Expr::ClassifyImpl(ASTContext &Ctx, SourceLocation *Loc) const { in ClassifyImpl() argument
40 Cl::Kinds kind = ClassifyInternal(Ctx, this); in ClassifyImpl()
43 if (!Ctx.getLangOpts().CPlusPlus) { in ClassifyImpl()
45 if (TR->isFunctionType() || TR == Ctx.OverloadTy) in ClassifyImpl()
72 modifiable = IsModifiable(Ctx, this, kind, *Loc); in ClassifyImpl()
102 static Cl::Kinds ClassifyInternal(ASTContext &Ctx, const Expr *E) { in ClassifyInternal() argument
104 const LangOptions &Lang = Ctx.getLangOpts(); in ClassifyInternal()
203 return ClassifyInternal(Ctx, cast<ConstantExpr>(E)->getSubExpr()); in ClassifyInternal()
207 return ClassifyInternal(Ctx, in ClassifyInternal()
216 return ClassifyInternal(Ctx, cast<ArraySubscriptExpr>(E)->getBase()); in ClassifyInternal()
222 return ClassifyInternal(Ctx, Base); in ClassifyInternal()
228 return ClassifyInternal(Ctx, cast<MatrixSubscriptExpr>(E)->getBase()); in ClassifyInternal()
233 if (E->getType() == Ctx.UnknownAnyTy) in ClassifyInternal()
236 return ClassifyDecl(Ctx, cast<DeclRefExpr>(E)->getDecl()); in ClassifyInternal()
240 return ClassifyMemberExpr(Ctx, cast<MemberExpr>(E)); in ClassifyInternal()
252 return ClassifyInternal(Ctx, cast<UnaryOperator>(E)->getSubExpr()); in ClassifyInternal()
259 Cl::Kinds K = ClassifyInternal(Ctx, Op); in ClassifyInternal()
295 return ClassifyInternal(Ctx, cast<ParenExpr>(E)->getSubExpr()); in ClassifyInternal()
303 return ClassifyInternal(Ctx,cast<GenericSelectionExpr>(E)->getResultExpr()); in ClassifyInternal()
309 return ClassifyBinaryOp(Ctx, cast<BinaryOperator>(E)); in ClassifyInternal()
317 return ClassifyUnnamed(Ctx, cast<CallExpr>(E)->getCallReturnType(Ctx)); in ClassifyInternal()
321 Ctx, cast<CXXRewrittenBinaryOperator>(E)->getSemanticForm()); in ClassifyInternal()
325 return ClassifyInternal(Ctx, cast<ChooseExpr>(E)->getChosenSubExpr()); in ClassifyInternal()
334 return ClassifyInternal(Ctx, cast<ExtVectorElementExpr>(E)->getBase()); in ClassifyInternal()
338 return ClassifyInternal(Ctx, cast<CXXDefaultArgExpr>(E)->getExpr()); in ClassifyInternal()
342 return ClassifyInternal(Ctx, cast<CXXDefaultInitExpr>(E)->getExpr()); in ClassifyInternal()
346 return ClassifyInternal(Ctx, cast<CXXBindTemporaryExpr>(E)->getSubExpr()); in ClassifyInternal()
350 return ClassifyInternal(Ctx, cast<ExprWithCleanups>(E)->getSubExpr()); in ClassifyInternal()
364 return ClassifyUnnamed(Ctx, cast<ExplicitCastExpr>(E)->getTypeAsWritten()); in ClassifyInternal()
367 return ClassifyUnnamed(Ctx, in ClassifyInternal()
373 return ClassifyConditional(Ctx, co->getTrueExpr(), co->getFalseExpr()); in ClassifyInternal()
380 return ClassifyConditional(Ctx, co->getTrueExpr(), co->getFalseExpr()); in ClassifyInternal()
388 Cl::Kinds kind = ClassifyUnnamed(Ctx, Method->getReturnType()); in ClassifyInternal()
402 return ClassifyUnnamed(Ctx, E->getType()); in ClassifyInternal()
405 return ClassifyInternal(Ctx, cast<DesignatedInitExpr>(E)->getInit()); in ClassifyInternal()
410 return ClassifyUnnamed(Ctx, LastExpr->getType()); in ClassifyInternal()
415 return ClassifyInternal(Ctx, cast<PackExpansionExpr>(E)->getPattern()); in ClassifyInternal()
431 return ClassifyInternal(Ctx, cast<InitListExpr>(E)->getInit(0)); in ClassifyInternal()
435 return ClassifyInternal(Ctx, cast<CoroutineSuspendExpr>(E)->getResumeExpr()); in ClassifyInternal()
443 static Cl::Kinds ClassifyDecl(ASTContext &Ctx, const Decl *D) { in ClassifyDecl() argument
464 (Ctx.getLangOpts().CPlusPlus && in ClassifyDecl()
474 static Cl::Kinds ClassifyUnnamed(ASTContext &Ctx, QualType T) { in ClassifyUnnamed() argument
476 if (!Ctx.getLangOpts().CPlusPlus) return Cl::CL_PRValue; in ClassifyUnnamed()
491 static Cl::Kinds ClassifyMemberExpr(ASTContext &Ctx, const MemberExpr *E) { in ClassifyMemberExpr() argument
492 if (E->getType() == Ctx.UnknownAnyTy) in ClassifyMemberExpr()
497 if (!Ctx.getLangOpts().CPlusPlus) { in ClassifyMemberExpr()
507 return ClassifyInternal(Ctx, Base); in ClassifyMemberExpr()
533 return ClassifyInternal(Ctx, E->getBase()); in ClassifyMemberExpr()
548 static Cl::Kinds ClassifyBinaryOp(ASTContext &Ctx, const BinaryOperator *E) { in ClassifyBinaryOp() argument
549 assert(Ctx.getLangOpts().CPlusPlus && in ClassifyBinaryOp()
560 return ClassifyInternal(Ctx, E->getRHS()); in ClassifyBinaryOp()
569 : ClassifyInternal(Ctx, E->getLHS()); in ClassifyBinaryOp()
583 static Cl::Kinds ClassifyConditional(ASTContext &Ctx, const Expr *True, in ClassifyConditional() argument
585 assert(Ctx.getLangOpts().CPlusPlus && in ClassifyConditional()
599 return ClassifyInternal(Ctx, NonThrow); in ClassifyConditional()
610 Cl::Kinds LCl = ClassifyInternal(Ctx, True), in ClassifyConditional()
611 RCl = ClassifyInternal(Ctx, False); in ClassifyConditional()
615 static Cl::ModifiableType IsModifiable(ASTContext &Ctx, const Expr *E, in IsModifiable() argument
634 if (Ctx.getLangOpts().CPlusPlus && E->getType()->isFunctionType()) in IsModifiable()
645 CanQualType CT = Ctx.getCanonicalType(E->getType()); in IsModifiable()
649 if (Ctx.getLangOpts().OpenCL && in IsModifiable()
668 Expr::LValueClassification Expr::ClassifyLValue(ASTContext &Ctx) const { in ClassifyLValue()
669 Classification VC = Classify(Ctx); in ClassifyLValue()
688 Expr::isModifiableLvalue(ASTContext &Ctx, SourceLocation *Loc) const { in isModifiableLvalue() argument
690 Classification VC = ClassifyModifiable(Ctx, Loc ? *Loc : dummy); in isModifiableLvalue()