Lines Matching refs:Ctx

123   CallingContext Ctx(nullptr, D);
130 Ctx.SelfArg = ME->getBase();
131 Ctx.SelfArrow = ME->isArrow();
133 Ctx.SelfArg = CE->getImplicitObjectArgument();
134 Ctx.SelfArrow = isCalleeArrow(CE->getCallee());
135 Ctx.NumArgs = CE->getNumArgs();
136 Ctx.FunArgs = CE->getArgs();
140 Ctx.SelfArg = CE->getArg(0);
141 Ctx.SelfArrow = false;
142 Ctx.NumArgs = CE->getNumArgs() - 1;
143 Ctx.FunArgs = CE->getArgs() + 1;
145 Ctx.NumArgs = CE->getNumArgs();
146 Ctx.FunArgs = CE->getArgs();
149 Ctx.SelfArg = nullptr; // Will be set below
150 Ctx.NumArgs = CE->getNumArgs();
151 Ctx.FunArgs = CE->getArgs();
160 Ctx.SelfArg = nullptr;
163 assert(!Ctx.SelfArg && "Ambiguous self argument");
166 Ctx.SelfArg = Self;
168 Ctx.FunArgs = Self;
178 return translateAttrExpr(AttrExp, &Ctx);
183 return translateAttrExpr(cast<const Expr *>(Ctx.SelfArg), nullptr);
185 return translateAttrExpr(AttrExp, &Ctx);
191 CallingContext *Ctx) {
220 til::SExpr *E = translate(AttrExp, Ctx);
248 // Also performs substitution of variables; Ctx provides the context.
250 til::SExpr *SExprBuilder::translate(const Stmt *S, CallingContext *Ctx) {
261 return translateDeclRefExpr(cast<DeclRefExpr>(S), Ctx);
263 return translateCXXThisExpr(cast<CXXThisExpr>(S), Ctx);
265 return translateMemberExpr(cast<MemberExpr>(S), Ctx);
267 return translateObjCIVarRefExpr(cast<ObjCIvarRefExpr>(S), Ctx);
269 return translateCallExpr(cast<CallExpr>(S), Ctx);
271 return translateCXXMemberCallExpr(cast<CXXMemberCallExpr>(S), Ctx);
273 return translateCXXOperatorCallExpr(cast<CXXOperatorCallExpr>(S), Ctx);
275 return translateUnaryOperator(cast<UnaryOperator>(S), Ctx);
278 return translateBinaryOperator(cast<BinaryOperator>(S), Ctx);
281 return translateArraySubscriptExpr(cast<ArraySubscriptExpr>(S), Ctx);
284 cast<ConditionalOperator>(S), Ctx);
287 cast<BinaryConditionalOperator>(S), Ctx);
291 return translate(cast<ConstantExpr>(S)->getSubExpr(), Ctx);
293 return translate(cast<ParenExpr>(S)->getSubExpr(), Ctx);
295 return translate(cast<ExprWithCleanups>(S)->getSubExpr(), Ctx);
297 return translate(cast<CXXBindTemporaryExpr>(S)->getSubExpr(), Ctx);
299 return translate(cast<MaterializeTemporaryExpr>(S)->getSubExpr(), Ctx);
314 return translateDeclStmt(cast<DeclStmt>(S), Ctx);
319 return translateCastExpr(CE, Ctx);
325 CallingContext *Ctx) {
332 if (Ctx && Ctx->FunArgs) {
333 const Decl *Canonical = Ctx->AttrDecl->getCanonicalDecl();
339 dyn_cast<const Expr *const *>(Ctx->FunArgs)) {
340 assert(I < Ctx->NumArgs);
341 return translate(FunArgs[I], Ctx->Prev);
345 return cast<til::SExpr *>(Ctx->FunArgs);
360 CallingContext *Ctx) {
362 if (Ctx && Ctx->SelfArg) {
363 if (const auto *SelfArg = dyn_cast<const Expr *>(Ctx->SelfArg))
364 return translate(SelfArg, Ctx->Prev);
366 return cast<til::SExpr *>(Ctx->SelfArg);
408 CallingContext *Ctx) {
409 til::SExpr *BE = translate(ME->getBase(), Ctx);
423 CallingContext *Ctx) {
424 til::SExpr *BE = translate(IVRE->getBase(), Ctx);
436 CallingContext *Ctx,
443 CallingContext LRCallCtx(Ctx);
454 til::SExpr *E = translate(CE->getCallee(), Ctx);
456 til::SExpr *A = translate(Arg, Ctx);
463 const CXXMemberCallExpr *ME, CallingContext *Ctx) {
468 auto *E = translate(ME->getImplicitObjectArgument(), Ctx);
473 return translateCallExpr(cast<CallExpr>(ME), Ctx,
478 const CXXOperatorCallExpr *OCE, CallingContext *Ctx) {
483 auto *E = translate(OCE->getArg(0), Ctx);
488 return translateCallExpr(cast<CallExpr>(OCE), Ctx);
492 CallingContext *Ctx) {
513 return translate(UO->getSubExpr(), Ctx);
518 return translate(UO->getSubExpr(), Ctx);
522 til::UnaryOp(til::UOP_Minus, translate(UO->getSubExpr(), Ctx));
525 til::UnaryOp(til::UOP_BitNot, translate(UO->getSubExpr(), Ctx));
528 til::UnaryOp(til::UOP_LogicNot, translate(UO->getSubExpr(), Ctx));
542 CallingContext *Ctx, bool Reverse) {
543 til::SExpr *E0 = translate(BO->getLHS(), Ctx);
544 til::SExpr *E1 = translate(BO->getRHS(), Ctx);
553 CallingContext *Ctx,
557 til::SExpr *E0 = translate(LHS, Ctx);
558 til::SExpr *E1 = translate(RHS, Ctx);
578 CallingContext *Ctx) {
584 case BO_Mul: return translateBinOp(til::BOP_Mul, BO, Ctx);
585 case BO_Div: return translateBinOp(til::BOP_Div, BO, Ctx);
586 case BO_Rem: return translateBinOp(til::BOP_Rem, BO, Ctx);
587 case BO_Add: return translateBinOp(til::BOP_Add, BO, Ctx);
588 case BO_Sub: return translateBinOp(til::BOP_Sub, BO, Ctx);
589 case BO_Shl: return translateBinOp(til::BOP_Shl, BO, Ctx);
590 case BO_Shr: return translateBinOp(til::BOP_Shr, BO, Ctx);
591 case BO_LT: return translateBinOp(til::BOP_Lt, BO, Ctx);
592 case BO_GT: return translateBinOp(til::BOP_Lt, BO, Ctx, true);
593 case BO_LE: return translateBinOp(til::BOP_Leq, BO, Ctx);
594 case BO_GE: return translateBinOp(til::BOP_Leq, BO, Ctx, true);
595 case BO_EQ: return translateBinOp(til::BOP_Eq, BO, Ctx);
596 case BO_NE: return translateBinOp(til::BOP_Neq, BO, Ctx);
597 case BO_Cmp: return translateBinOp(til::BOP_Cmp, BO, Ctx);
598 case BO_And: return translateBinOp(til::BOP_BitAnd, BO, Ctx);
599 case BO_Xor: return translateBinOp(til::BOP_BitXor, BO, Ctx);
600 case BO_Or: return translateBinOp(til::BOP_BitOr, BO, Ctx);
601 case BO_LAnd: return translateBinOp(til::BOP_LogicAnd, BO, Ctx);
602 case BO_LOr: return translateBinOp(til::BOP_LogicOr, BO, Ctx);
604 case BO_Assign: return translateBinAssign(til::BOP_Eq, BO, Ctx, true);
605 case BO_MulAssign: return translateBinAssign(til::BOP_Mul, BO, Ctx);
606 case BO_DivAssign: return translateBinAssign(til::BOP_Div, BO, Ctx);
607 case BO_RemAssign: return translateBinAssign(til::BOP_Rem, BO, Ctx);
608 case BO_AddAssign: return translateBinAssign(til::BOP_Add, BO, Ctx);
609 case BO_SubAssign: return translateBinAssign(til::BOP_Sub, BO, Ctx);
610 case BO_ShlAssign: return translateBinAssign(til::BOP_Shl, BO, Ctx);
611 case BO_ShrAssign: return translateBinAssign(til::BOP_Shr, BO, Ctx);
612 case BO_AndAssign: return translateBinAssign(til::BOP_BitAnd, BO, Ctx);
613 case BO_XorAssign: return translateBinAssign(til::BOP_BitXor, BO, Ctx);
614 case BO_OrAssign: return translateBinAssign(til::BOP_BitOr, BO, Ctx);
618 return translate(BO->getRHS(), Ctx);
624 CallingContext *Ctx) {
633 til::SExpr *E0 = translate(CE->getSubExpr(), Ctx);
643 til::SExpr *E0 = translate(CE->getSubExpr(), Ctx);
648 til::SExpr *E0 = translate(CE->getSubExpr(), Ctx);
658 CallingContext *Ctx) {
659 til::SExpr *E0 = translate(E->getBase(), Ctx);
660 til::SExpr *E1 = translate(E->getIdx(), Ctx);
666 const AbstractConditionalOperator *CO, CallingContext *Ctx) {
667 auto *C = translate(CO->getCond(), Ctx);
668 auto *T = translate(CO->getTrueExpr(), Ctx);
669 auto *E = translate(CO->getFalseExpr(), Ctx);
674 SExprBuilder::translateDeclStmt(const DeclStmt *S, CallingContext *Ctx) {
679 til::SExpr* SE = translate(E, Ctx);