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()
209 return ClassifyInternal(Ctx, cast<ConstantExpr>(E)->getSubExpr()); in ClassifyInternal()
213 return ClassifyInternal(Ctx, in ClassifyInternal()
222 return ClassifyInternal(Ctx, cast<ArraySubscriptExpr>(E)->getBase()); in ClassifyInternal()
228 return ClassifyInternal(Ctx, Base); in ClassifyInternal()
234 return ClassifyInternal(Ctx, cast<MatrixSubscriptExpr>(E)->getBase()); in ClassifyInternal()
239 if (E->getType() == Ctx.UnknownAnyTy) in ClassifyInternal()
242 return ClassifyDecl(Ctx, cast<DeclRefExpr>(E)->getDecl()); in ClassifyInternal()
246 return ClassifyMemberExpr(Ctx, cast<MemberExpr>(E)); in ClassifyInternal()
258 return ClassifyInternal(Ctx, cast<UnaryOperator>(E)->getSubExpr()); in ClassifyInternal()
265 Cl::Kinds K = ClassifyInternal(Ctx, Op); in ClassifyInternal()
301 return ClassifyInternal(Ctx, cast<ParenExpr>(E)->getSubExpr()); in ClassifyInternal()
309 return ClassifyInternal(Ctx,cast<GenericSelectionExpr>(E)->getResultExpr()); in ClassifyInternal()
315 return ClassifyBinaryOp(Ctx, cast<BinaryOperator>(E)); in ClassifyInternal()
323 return ClassifyUnnamed(Ctx, cast<CallExpr>(E)->getCallReturnType(Ctx)); in ClassifyInternal()
327 Ctx, cast<CXXRewrittenBinaryOperator>(E)->getSemanticForm()); in ClassifyInternal()
331 return ClassifyInternal(Ctx, cast<ChooseExpr>(E)->getChosenSubExpr()); in ClassifyInternal()
340 return ClassifyInternal(Ctx, cast<ExtVectorElementExpr>(E)->getBase()); in ClassifyInternal()
344 return ClassifyInternal(Ctx, cast<CXXDefaultArgExpr>(E)->getExpr()); in ClassifyInternal()
348 return ClassifyInternal(Ctx, cast<CXXDefaultInitExpr>(E)->getExpr()); in ClassifyInternal()
352 return ClassifyInternal(Ctx, cast<CXXBindTemporaryExpr>(E)->getSubExpr()); in ClassifyInternal()
356 return ClassifyInternal(Ctx, cast<ExprWithCleanups>(E)->getSubExpr()); in ClassifyInternal()
370 return ClassifyUnnamed(Ctx, cast<ExplicitCastExpr>(E)->getTypeAsWritten()); in ClassifyInternal()
373 return ClassifyUnnamed(Ctx, in ClassifyInternal()
379 return ClassifyConditional(Ctx, co->getTrueExpr(), co->getFalseExpr()); in ClassifyInternal()
386 return ClassifyConditional(Ctx, co->getTrueExpr(), co->getFalseExpr()); in ClassifyInternal()
394 Cl::Kinds kind = ClassifyUnnamed(Ctx, Method->getReturnType()); in ClassifyInternal()
408 return ClassifyUnnamed(Ctx, E->getType()); in ClassifyInternal()
411 return ClassifyInternal(Ctx, cast<DesignatedInitExpr>(E)->getInit()); in ClassifyInternal()
416 return ClassifyUnnamed(Ctx, LastExpr->getType()); in ClassifyInternal()
421 return ClassifyInternal(Ctx, cast<PackExpansionExpr>(E)->getPattern()); in ClassifyInternal()
437 return ClassifyInternal(Ctx, cast<InitListExpr>(E)->getInit(0)); in ClassifyInternal()
441 return ClassifyInternal(Ctx, cast<CoroutineSuspendExpr>(E)->getResumeExpr()); in ClassifyInternal()
452 static Cl::Kinds ClassifyDecl(ASTContext &Ctx, const Decl *D) { in ClassifyDecl() argument
471 (Ctx.getLangOpts().CPlusPlus && in ClassifyDecl()
480 static Cl::Kinds ClassifyUnnamed(ASTContext &Ctx, QualType T) { in ClassifyUnnamed() argument
482 if (!Ctx.getLangOpts().CPlusPlus) return Cl::CL_PRValue; in ClassifyUnnamed()
497 static Cl::Kinds ClassifyMemberExpr(ASTContext &Ctx, const MemberExpr *E) { in ClassifyMemberExpr() argument
498 if (E->getType() == Ctx.UnknownAnyTy) in ClassifyMemberExpr()
503 if (!Ctx.getLangOpts().CPlusPlus) { in ClassifyMemberExpr()
513 return ClassifyInternal(Ctx, Base); in ClassifyMemberExpr()
539 return ClassifyInternal(Ctx, E->getBase()); in ClassifyMemberExpr()
554 static Cl::Kinds ClassifyBinaryOp(ASTContext &Ctx, const BinaryOperator *E) { in ClassifyBinaryOp() argument
555 assert(Ctx.getLangOpts().CPlusPlus && in ClassifyBinaryOp()
566 return ClassifyInternal(Ctx, E->getRHS()); in ClassifyBinaryOp()
575 : ClassifyInternal(Ctx, E->getLHS()); in ClassifyBinaryOp()
589 static Cl::Kinds ClassifyConditional(ASTContext &Ctx, const Expr *True, in ClassifyConditional() argument
591 assert(Ctx.getLangOpts().CPlusPlus && in ClassifyConditional()
605 return ClassifyInternal(Ctx, NonThrow); in ClassifyConditional()
616 Cl::Kinds LCl = ClassifyInternal(Ctx, True), in ClassifyConditional()
617 RCl = ClassifyInternal(Ctx, False); in ClassifyConditional()
621 static Cl::ModifiableType IsModifiable(ASTContext &Ctx, const Expr *E, in IsModifiable() argument
640 if (Ctx.getLangOpts().CPlusPlus && E->getType()->isFunctionType()) in IsModifiable()
651 CanQualType CT = Ctx.getCanonicalType(E->getType()); in IsModifiable()
655 if (Ctx.getLangOpts().OpenCL && in IsModifiable()
674 Expr::LValueClassification Expr::ClassifyLValue(ASTContext &Ctx) const { in ClassifyLValue()
675 Classification VC = Classify(Ctx); in ClassifyLValue()
694 Expr::isModifiableLvalue(ASTContext &Ctx, SourceLocation *Loc) const { in isModifiableLvalue() argument
696 Classification VC = ClassifyModifiable(Ctx, Loc ? *Loc : dummy); in isModifiableLvalue()