mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-26 14:25:18 +00:00
Fix a bug in which address displacements were being added to the
load from the stub, instead of the result of the load from the stub. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56626 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c4f72dd6e7
commit
789ce77c6a
@ -427,10 +427,18 @@ bool X86FastISel::X86SelectAddress(Value *V, X86AddressMode &AM, bool isCall) {
|
||||
Opc = X86::MOV64rm;
|
||||
RC = X86::GR64RegisterClass;
|
||||
}
|
||||
|
||||
X86AddressMode StubAM;
|
||||
StubAM.Base.Reg = AM.Base.Reg;
|
||||
StubAM.GV = AM.GV;
|
||||
unsigned ResultReg = createResultReg(RC);
|
||||
addFullAddress(BuildMI(MBB, TII.get(Opc), ResultReg), AM);
|
||||
addFullAddress(BuildMI(MBB, TII.get(Opc), ResultReg), StubAM);
|
||||
|
||||
// Now construct the final address. Note that the Disp, Scale,
|
||||
// and Index values may already be set here.
|
||||
AM.Base.Reg = ResultReg;
|
||||
AM.GV = 0;
|
||||
|
||||
// Prevent loading GV stub multiple times in same MBB.
|
||||
LocalValueMap[V] = AM.Base.Reg;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user