summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2012-10-27 00:36:38 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2012-10-27 00:36:38 +0000
commite7b11f5241dc6ca730d75052fab0bf6af907a28e (patch)
treebab5ecc99c08909f892092d831f4cef010abd5e7 /clang/lib
parentac8c6699858729a30c70dfc5dcc8bb96d42e39e8 (diff)
downloadbcm5719-llvm-e7b11f5241dc6ca730d75052fab0bf6af907a28e.tar.gz
bcm5719-llvm-e7b11f5241dc6ca730d75052fab0bf6af907a28e.zip
Delay codegen to after collecting all SubobjectAdjustment so that the collection
can be refactored and used in Sema. llvm-svn: 166847
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/CodeGen/CGExpr.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp
index 21df6e8cfa6..a9777478d2d 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<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;
}
}
OpenPOWER on IntegriCloud