Store a GlobalDecl in the return adjustment.
llvm-svn: 90387
This commit is contained in:
parent
2bd3c0fa34
commit
c38b40a709
|
@ -81,7 +81,8 @@ private:
|
|||
CovariantThunk()
|
||||
: Index(0) { }
|
||||
|
||||
CovariantThunk(uint64_t Index, const ThunkAdjustment &ReturnAdjustment,
|
||||
CovariantThunk(uint64_t Index, GlobalDecl GD,
|
||||
const ThunkAdjustment &ReturnAdjustment,
|
||||
CanQualType ReturnType)
|
||||
: Index(Index), ReturnAdjustment(ReturnAdjustment),
|
||||
ReturnType(ReturnType) { }
|
||||
|
@ -89,6 +90,8 @@ private:
|
|||
// Index - The index in the vtable.
|
||||
uint64_t Index;
|
||||
|
||||
GlobalDecl GD;
|
||||
|
||||
/// ReturnAdjustment - The covariant thunk return adjustment.
|
||||
ThunkAdjustment ReturnAdjustment;
|
||||
|
||||
|
@ -762,7 +765,7 @@ bool VtableBuilder::OverrideMethod(GlobalDecl GD, llvm::Constant *m,
|
|||
// FIXME: Do we always have to build a covariant thunk to save oret,
|
||||
// which is the containing virtual base class?
|
||||
if (!ReturnAdjustment.isEmpty())
|
||||
CovariantThunks[GD] = CovariantThunk(i, ReturnAdjustment, oret);
|
||||
CovariantThunks[GD] = CovariantThunk(i, GD, ReturnAdjustment, oret);
|
||||
|
||||
if (!isPure && !ThisAdjustment.isEmpty())
|
||||
Thunks[GD] = Thunk(i, ThisAdjustment);
|
||||
|
@ -777,7 +780,7 @@ bool VtableBuilder::OverrideMethod(GlobalDecl GD, llvm::Constant *m,
|
|||
|
||||
if (!ReturnAdjustment.isEmpty())
|
||||
CovariantThunks[GD] =
|
||||
CovariantThunk(i, ReturnAdjustment, oret);
|
||||
CovariantThunk(i, GD, ReturnAdjustment, oret);
|
||||
|
||||
if (!isPure)
|
||||
Thunks[GD] = Thunk(i, ThisAdjustment);
|
||||
|
|
Loading…
Reference in New Issue