Lines Matching refs:Expr

50     typedef llvm::function_ref<Expr *(Expr *, unsigned)> SpecificRebuilderRefTy;
56 Expr *rebuildObjCPropertyRefExpr(ObjCPropertyRefExpr *refExpr) {
74 Expr *rebuildObjCSubscriptRefExpr(ObjCSubscriptRefExpr *refExpr) {
85 Expr *rebuildMSPropertyRefExpr(MSPropertyRefExpr *refExpr) {
94 Expr *rebuildMSPropertySubscriptExpr(MSPropertySubscriptExpr *refExpr) {
107 Expr *rebuild(Expr *e) {
143 SmallVector<Expr*, 8> assocs(numAssocs);
147 Expr *assoc = gse->getAssocExpr(i);
167 Expr *LHS = ce->getLHS(), *RHS = ce->getRHS();
168 Expr *&rebuiltExpr = ce->isConditionTrue() ? LHS : RHS;
192 SmallVector<Expr *, 4> Semantics;
201 void addSemanticExpr(Expr *semantic) {
206 void addResultSemanticExpr(Expr *resultExpr) {
212 ExprResult buildRValueOperation(Expr *op);
216 Expr *LHS, Expr *RHS);
219 Expr *op);
221 virtual ExprResult complete(Expr *syntacticForm);
223 OpaqueValueExpr *capture(Expr *op);
224 OpaqueValueExpr *captureValueAsResult(Expr *op);
232 static bool CanCaptureValue(Expr *exp) {
244 virtual Expr *rebuildAndCaptureObject(Expr *) = 0;
246 virtual ExprResult buildSet(Expr *, SourceLocation,
282 ExprResult buildRValueOperation(Expr *op);
286 Expr *LHS, Expr *RHS);
289 Expr *op);
291 bool tryBuildGetOfReference(Expr *op, ExprResult &result);
296 Expr *rebuildAndCaptureObject(Expr *syntacticBase) override;
298 ExprResult buildSet(Expr *op, SourceLocation, bool) override;
299 ExprResult complete(Expr *SyntacticForm) override;
322 ExprResult buildRValueOperation(Expr *op);
326 Expr *LHS, Expr *RHS);
327 Expr *rebuildAndCaptureObject(Expr *syntacticBase) override;
333 ExprResult buildSet(Expr *op, SourceLocation, bool) override;
339 SmallVector<Expr *, 4> CallArgs;
353 Expr *rebuildAndCaptureObject(Expr *) override;
355 ExprResult buildSet(Expr *op, SourceLocation, bool) override;
361 OpaqueValueExpr *PseudoOpBuilder::capture(Expr *e) {
379 OpaqueValueExpr *PseudoOpBuilder::captureValueAsResult(Expr *e) {
403 ExprResult PseudoOpBuilder::complete(Expr *syntactic) {
409 ExprResult PseudoOpBuilder::buildRValueOperation(Expr *op) {
410 Expr *syntacticBase = rebuildAndCaptureObject(op);
424 Expr *LHS, Expr *RHS) {
427 Expr *syntacticLHS = rebuildAndCaptureObject(LHS);
436 Expr *semanticRHS = capturedRHS;
442 Expr *syntactic;
488 Expr *op) {
491 Expr *syntacticOp = rebuildAndCaptureObject(op);
508 Expr *one = IntegerLiteral::Create(S.Context, oneV, S.Context.IntTy,
550 S.isSelfExpr(const_cast<Expr*>(PRE->getBase()))) {
694 Expr *ObjCPropertyOpBuilder::rebuildAndCaptureObject(Expr *syntacticBase) {
701 syntacticBase = Rebuilder(S, [=](Expr *, unsigned) -> Expr * {
747 ExprResult ObjCPropertyOpBuilder::buildSet(Expr *op, SourceLocation opcLoc,
783 Expr *args[] = { op };
804 Expr *arg = msgExpr->getArg(0);
813 ExprResult ObjCPropertyOpBuilder::buildRValueOperation(Expr *op) {
857 bool ObjCPropertyOpBuilder::tryBuildGetOfReference(Expr *op,
882 Expr *LHS, Expr *RHS) {
928 Expr *op) {
962 ExprResult ObjCPropertyOpBuilder::complete(Expr *SyntacticForm) {
979 ExprResult ObjCSubscriptOpBuilder::buildRValueOperation(Expr *op) {
990 Expr *LHS, Expr *RHS) {
1014 Expr *ObjCSubscriptOpBuilder::rebuildAndCaptureObject(Expr *syntacticBase) {
1023 Rebuilder(S, [=](Expr *, unsigned Idx) -> Expr * {
1040 Sema::CheckSubscriptingKind(Expr *FromE) {
1057 const Expr *IndexExpr = FromE->IgnoreParenImpCasts();
1113 Expr *Key) {
1135 Expr *BaseExpr = RefExpr->getBaseExpr();
1241 Expr *BaseExpr = RefExpr->getBaseExpr();
1382 Expr *Index = InstanceKey;
1385 Expr *args[] = { Index };
1401 ExprResult ObjCSubscriptOpBuilder::buildSet(Expr *op, SourceLocation opcLoc,
1408 Expr *Index = InstanceKey;
1411 Expr *args[] = { op, Index };
1423 Expr *arg = msgExpr->getArg(0);
1438 Expr *Base = E->getBase()->IgnoreParens();
1446 Expr *MSPropertyOpBuilder::rebuildAndCaptureObject(Expr *syntacticBase) {
1449 [this](Expr *&Arg) { Arg = capture(Arg); });
1450 syntacticBase = Rebuilder(S, [=](Expr *, unsigned Idx) -> Expr * {
1491 ExprResult MSPropertyOpBuilder::buildSet(Expr *op, SourceLocation sl,
1515 SmallVector<Expr*, 4> ArgExprs;
1527 ExprResult Sema::checkPseudoObjectRValue(Expr *E) {
1528 Expr *opaqueRef = E->IgnoreParens();
1553 UnaryOperatorKind opcode, Expr *op) {
1560 Expr *opaqueRef = op->IgnoreParens();
1583 Expr *LHS, Expr *RHS) {
1596 Expr *opaqueRef = LHS->IgnoreParens();
1621 static Expr *stripOpaqueValuesFromPseudoObjectRef(Sema &S, Expr *E) {
1623 [=](Expr *E, unsigned) -> Expr * {
1635 Expr *Sema::recreateSyntacticForm(PseudoObjectExpr *E) {
1636 Expr *syntax = E->getSyntacticForm();
1638 Expr *op = stripOpaqueValuesFromPseudoObjectRef(*this, uop->getSubExpr());
1644 Expr *lhs = stripOpaqueValuesFromPseudoObjectRef(*this, cop->getLHS());
1645 Expr *rhs = cast<OpaqueValueExpr>(cop->getRHS())->getSourceExpr();
1654 Expr *lhs = stripOpaqueValuesFromPseudoObjectRef(*this, bop->getLHS());
1655 Expr *rhs = cast<OpaqueValueExpr>(bop->getRHS())->getSourceExpr();