From: Rafael Espindola Date: Sat, 27 Oct 2012 00:36:38 +0000 (+0000) Subject: Delay codegen to after collecting all SubobjectAdjustment so that the collection X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e7b11f5241dc6ca730d75052fab0bf6af907a28e;p=platform%2Fupstream%2Fllvm.git Delay codegen to after collecting all SubobjectAdjustment so that the collection can be refactored and used in Sema. llvm-svn: 166847 --- diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp index 21df6e8..a977747 100644 --- a/clang/lib/CodeGen/CGExpr.cpp +++ b/clang/lib/CodeGen/CGExpr.cpp @@ -177,7 +177,7 @@ namespace { struct { const MemberPointerType *MPT; - llvm::Value *Ptr; + Expr *RHS; } Ptr; }; @@ -193,10 +193,10 @@ namespace { this->Field = Field; } - SubobjectAdjustment(const MemberPointerType *MPT, llvm::Value *Ptr) + SubobjectAdjustment(const MemberPointerType *MPT, Expr *RHS) : Kind(MemberPointerAdjustment) { this->Ptr.MPT = MPT; - this->Ptr.Ptr = Ptr; + this->Ptr.RHS = RHS; } }; } @@ -371,8 +371,7 @@ EmitExprForReferenceBinding(CodeGenFunction &CGF, const Expr *E, E = BO->getLHS(); const MemberPointerType *MPT = BO->getRHS()->getType()->getAs(); - llvm::Value *Ptr = CGF.EmitScalarExpr(BO->getRHS()); - Adjustments.push_back(SubobjectAdjustment(MPT, Ptr)); + Adjustments.push_back(SubobjectAdjustment(MPT, BO->getRHS())); } } @@ -447,8 +446,9 @@ EmitExprForReferenceBinding(CodeGenFunction &CGF, const Expr *E, } case SubobjectAdjustment::MemberPointerAdjustment: { + llvm::Value *Ptr = CGF.EmitScalarExpr(Adjustment.Ptr.RHS); Object = CGF.CGM.getCXXABI().EmitMemberDataPointerAddress( - CGF, Object, Adjustment.Ptr.Ptr, Adjustment.Ptr.MPT); + CGF, Object, Ptr, Adjustment.Ptr.MPT); break; } }