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()
78 modifiable = IsModifiable(Ctx, this, kind, *Loc); in ClassifyImpl()
108 static Cl::Kinds ClassifyInternal(ASTContext &Ctx, const Expr *E) { in ClassifyInternal() argument
110 const LangOptions &Lang = Ctx.getLangOpts(); in ClassifyInternal()
212 return ClassifyInternal(Ctx, cast<ConstantExpr>(E)->getSubExpr()); in ClassifyInternal()
216 return ClassifyInternal(Ctx, in ClassifyInternal()
225 return ClassifyInternal(Ctx, cast<ArraySubscriptExpr>(E)->getBase()); in ClassifyInternal()
231 return ClassifyInternal(Ctx, Base); in ClassifyInternal()
237 return ClassifyInternal(Ctx, cast<MatrixSubscriptExpr>(E)->getBase()); in ClassifyInternal()
242 if (E->getType() == Ctx.UnknownAnyTy) in ClassifyInternal()
245 return ClassifyDecl(Ctx, cast<DeclRefExpr>(E)->getDecl()); in ClassifyInternal()
249 return ClassifyMemberExpr(Ctx, cast<MemberExpr>(E)); in ClassifyInternal()
261 return ClassifyInternal(Ctx, cast<UnaryOperator>(E)->getSubExpr()); in ClassifyInternal()
268 Cl::Kinds K = ClassifyInternal(Ctx, Op); in ClassifyInternal()
304 return ClassifyInternal(Ctx, cast<ParenExpr>(E)->getSubExpr()); in ClassifyInternal()
312 return ClassifyInternal(Ctx,cast<GenericSelectionExpr>(E)->getResultExpr()); in ClassifyInternal()
318 return ClassifyBinaryOp(Ctx, cast<BinaryOperator>(E)); in ClassifyInternal()
326 return ClassifyUnnamed(Ctx, cast<CallExpr>(E)->getCallReturnType(Ctx)); in ClassifyInternal()
330 Ctx, cast<CXXRewrittenBinaryOperator>(E)->getSemanticForm()); in ClassifyInternal()
334 return ClassifyInternal(Ctx, cast<ChooseExpr>(E)->getChosenSubExpr()); in ClassifyInternal()
343 return ClassifyInternal(Ctx, cast<ExtVectorElementExpr>(E)->getBase()); in ClassifyInternal()
347 return ClassifyInternal(Ctx, cast<CXXDefaultArgExpr>(E)->getExpr()); in ClassifyInternal()
351 return ClassifyInternal(Ctx, cast<CXXDefaultInitExpr>(E)->getExpr()); in ClassifyInternal()
355 return ClassifyInternal(Ctx, cast<CXXBindTemporaryExpr>(E)->getSubExpr()); in ClassifyInternal()
359 return ClassifyInternal(Ctx, cast<ExprWithCleanups>(E)->getSubExpr()); in ClassifyInternal()
373 return ClassifyUnnamed(Ctx, cast<ExplicitCastExpr>(E)->getTypeAsWritten()); in ClassifyInternal()
376 return ClassifyUnnamed(Ctx, in ClassifyInternal()
382 return ClassifyConditional(Ctx, co->getTrueExpr(), co->getFalseExpr()); in ClassifyInternal()
389 return ClassifyConditional(Ctx, co->getTrueExpr(), co->getFalseExpr()); in ClassifyInternal()
397 Cl::Kinds kind = ClassifyUnnamed(Ctx, Method->getReturnType()); in ClassifyInternal()
411 return ClassifyUnnamed(Ctx, E->getType()); in ClassifyInternal()
414 return ClassifyInternal(Ctx, cast<DesignatedInitExpr>(E)->getInit()); in ClassifyInternal()
419 return ClassifyUnnamed(Ctx, LastExpr->getType()); in ClassifyInternal()
424 return ClassifyInternal(Ctx, cast<PackExpansionExpr>(E)->getPattern()); in ClassifyInternal()
440 return ClassifyInternal(Ctx, cast<InitListExpr>(E)->getInit(0)); in ClassifyInternal()
444 return ClassifyInternal(Ctx, cast<CoroutineSuspendExpr>(E)->getResumeExpr()); in ClassifyInternal()
460 static Cl::Kinds ClassifyDecl(ASTContext &Ctx, const Decl *D) { in ClassifyDecl() argument
484 (Ctx.getLangOpts().CPlusPlus && in ClassifyDecl()
493 static Cl::Kinds ClassifyUnnamed(ASTContext &Ctx, QualType T) { in ClassifyUnnamed() argument
495 if (!Ctx.getLangOpts().CPlusPlus) return Cl::CL_PRValue; in ClassifyUnnamed()
510 static Cl::Kinds ClassifyMemberExpr(ASTContext &Ctx, const MemberExpr *E) { in ClassifyMemberExpr() argument
511 if (E->getType() == Ctx.UnknownAnyTy) in ClassifyMemberExpr()
516 if (!Ctx.getLangOpts().CPlusPlus) { in ClassifyMemberExpr()
526 return ClassifyInternal(Ctx, Base); in ClassifyMemberExpr()
552 return ClassifyInternal(Ctx, E->getBase()); in ClassifyMemberExpr()
572 static Cl::Kinds ClassifyBinaryOp(ASTContext &Ctx, const BinaryOperator *E) { in ClassifyBinaryOp() argument
573 assert(Ctx.getLangOpts().CPlusPlus && in ClassifyBinaryOp()
584 return ClassifyInternal(Ctx, E->getRHS()); in ClassifyBinaryOp()
593 : ClassifyInternal(Ctx, E->getLHS()); in ClassifyBinaryOp()
607 static Cl::Kinds ClassifyConditional(ASTContext &Ctx, const Expr *True, in ClassifyConditional() argument
609 assert(Ctx.getLangOpts().CPlusPlus && in ClassifyConditional()
623 return ClassifyInternal(Ctx, NonThrow); in ClassifyConditional()
634 Cl::Kinds LCl = ClassifyInternal(Ctx, True), in ClassifyConditional()
635 RCl = ClassifyInternal(Ctx, False); in ClassifyConditional()
639 static Cl::ModifiableType IsModifiable(ASTContext &Ctx, const Expr *E, in IsModifiable() argument
658 if (Ctx.getLangOpts().CPlusPlus && E->getType()->isFunctionType()) in IsModifiable()
669 CanQualType CT = Ctx.getCanonicalType(E->getType()); in IsModifiable()
673 if (Ctx.getLangOpts().OpenCL && in IsModifiable()
692 Expr::LValueClassification Expr::ClassifyLValue(ASTContext &Ctx) const { in ClassifyLValue()
693 Classification VC = Classify(Ctx); in ClassifyLValue()
712 Expr::isModifiableLvalue(ASTContext &Ctx, SourceLocation *Loc) const { in isModifiableLvalue() argument
714 Classification VC = ClassifyModifiable(Ctx, Loc ? *Loc : dummy); in isModifiableLvalue()