diff options
-rw-r--r-- | lib/CodeGen/CGExpr.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/CodeGen/CGExpr.cpp b/lib/CodeGen/CGExpr.cpp index 21df6e8cfa..a9777478d2 100644 --- a/lib/CodeGen/CGExpr.cpp +++ b/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<MemberPointerType>(); - 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; } } |