actually, just eliminate PCRelGVRequiresExtraLoad. It makes the code

more complex and slow than just directly testing what we care about.

llvm-svn: 75231
This commit is contained in:
Chris Lattner 2009-07-10 05:48:03 +00:00
parent 7277a807f0
commit ace6ec26d9
4 changed files with 2 additions and 22 deletions

View File

@ -587,7 +587,7 @@ bool X86FastISel::X86SelectCallAddress(Value *V, X86AddressMode &AM) {
(AM.Base.Reg != 0 || AM.IndexReg != 0))
return false;
// Can't handle TLS yet.
// Can't handle TLS or DLLImport.
if (GlobalVariable *GVar = dyn_cast<GlobalVariable>(GV))
if (GVar->isThreadLocal() || GVar->hasDLLImportLinkage())
return false;
@ -597,7 +597,6 @@ bool X86FastISel::X86SelectCallAddress(Value *V, X86AddressMode &AM) {
// No ABI requires an extra load for anything other than DLLImport, which
// we rejected above. Return a direct reference to the global.
assert(!Subtarget->PCRelGVRequiresExtraLoad(GV, TM));
if (Subtarget->isPICStyleRIPRel()) {
// Use rip-relative addressing if we can. Above we verified that the
// base and index registers are unused.

View File

@ -1902,7 +1902,7 @@ SDValue X86TargetLowering::LowerCALL(SDValue Op, SelectionDAG &DAG) {
// We should use extra load for direct calls to dllimported functions in
// non-JIT mode.
GlobalValue *GV = G->getGlobal();
if (!Subtarget->PCRelGVRequiresExtraLoad(GV, getTargetMachine())) {
if (!GV->hasDLLImportLinkage()) {
unsigned char OpFlags = 0;
// On ELF targets, in both X86-64 and X86-32 mode, direct calls to

View File

@ -72,19 +72,6 @@ bool X86Subtarget::GVRequiresExtraLoad(const GlobalValue *GV,
return false;
}
/// PCRelGVRequiresExtraLoad - True if accessing the GV from a PC-relative
/// operand like a call target requires an extra load.
bool X86Subtarget::PCRelGVRequiresExtraLoad(const GlobalValue *GV,
const TargetMachine &TM) const {
// Windows targets only require an extra load for DLLImport linkage values,
// and they need these regardless of whether we're in PIC mode or not.
if (isTargetCygMing() || isTargetWindows())
return GV->hasDLLImportLinkage();
return false;
}
/// True if accessing the GV requires a register. This is a superset of the
/// cases where GVRequiresExtraLoad is true. Some variations of PIC require
/// a register, but not an extra load.

View File

@ -204,12 +204,6 @@ public:
bool GVRequiresExtraLoad(const GlobalValue* GV, const TargetMachine &TM,
bool isDirectCall) const;
/// PCRelGVRequiresExtraLoad - True if accessing the GV from a PC-relative
/// operand like a call target requires an extra load.
bool PCRelGVRequiresExtraLoad(const GlobalValue *GV,
const TargetMachine &TM) const;
/// True if accessing the GV requires a register. This is a superset of the
/// cases where GVRequiresExtraLoad is true. Some variations of PIC require
/// a register, but not an extra load.