forked from OSchip/llvm-project
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:
parent
7277a807f0
commit
ace6ec26d9
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Reference in New Issue