struct {
const MemberPointerType *MPT;
- llvm::Value *Ptr;
+ Expr *RHS;
} Ptr;
};
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;
}
};
}
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()));
}
}
}
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;
}
}