1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00

Can't handle offset and scale if rip-relative addressing is to be used.

llvm-svn: 40703
This commit is contained in:
Evan Cheng 2007-08-01 23:46:47 +00:00
parent 69bbf3ed2a
commit 019ecf3b91

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