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:
Evan Cheng 2007-08-01 23:46:47 +00:00
parent 0db079e2e6
commit 5278784621

View File

@ -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) {