mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-02 08:46:37 +00:00
Can't handle offset and scale if rip-relative addressing is to be used.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40703 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0db079e2e6
commit
5278784621
@ -4449,14 +4449,18 @@ bool X86TargetLowering::isLegalAddressingMode(const AddrMode &AM,
|
||||
return false;
|
||||
|
||||
if (AM.BaseGV) {
|
||||
// X86-64 only supports addr of globals in small code model.
|
||||
if (Subtarget->is64Bit() &&
|
||||
getTargetMachine().getCodeModel() != CodeModel::Small)
|
||||
return false;
|
||||
|
||||
// We can only fold this if we don't need a load either.
|
||||
// We can only fold this if we don't need an extra load.
|
||||
if (Subtarget->GVRequiresExtraLoad(AM.BaseGV, getTargetMachine(), false))
|
||||
return false;
|
||||
|
||||
// X86-64 only supports addr of globals in small code model.
|
||||
if (Subtarget->is64Bit()) {
|
||||
if (getTargetMachine().getCodeModel() != CodeModel::Small)
|
||||
return false;
|
||||
// If lower 4G is not available, then we must use rip-relative addressing.
|
||||
if (AM.BaseOffs || AM.Scale > 1)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
switch (AM.Scale) {
|
||||
|
Loading…
Reference in New Issue
Block a user