GVRequiresExtraLoad is now never used for calls, simplify it based on this.
authorChris Lattner <sabre@nondot.org>
Fri, 10 Jul 2009 05:52:02 +0000 (05:52 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 10 Jul 2009 05:52:02 +0000 (05:52 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75232 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86CodeEmitter.cpp
lib/Target/X86/X86FastISel.cpp
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86InstrInfo.cpp
lib/Target/X86/X86Subtarget.cpp
lib/Target/X86/X86Subtarget.h

index 08b94e25d7e5d43121d2ebcd476bc5f3ea5ce75a..b0bc6783bd130b13ceda6fe9f64552a49716428d 100644 (file)
@@ -301,7 +301,7 @@ static bool gvNeedsNonLazyPtr(const MachineOperand &GVOp,
       !TM.getSubtarget<X86Subtarget>().isTargetDarwin())
     return false;
   
-  return TM.getSubtarget<X86Subtarget>().GVRequiresExtraLoad(GV, TM, false);
+  return TM.getSubtarget<X86Subtarget>().GVRequiresExtraLoad(GV, TM);
 }
 
 template<class CodeEmitter>
index 6359a4bef48c19c2c5ff35dd56c302f2a37be42f..488e2a31edbbd9b4da1d6d619df4ab47f3ad2513 100644 (file)
@@ -449,7 +449,7 @@ bool X86FastISel::X86SelectAddress(Value *V, X86AddressMode &AM) {
 
     // If the ABI doesn't require an extra load, return a direct reference to
     // the global.
-    if (!Subtarget->GVRequiresExtraLoad(GV, TM, false)) {
+    if (!Subtarget->GVRequiresExtraLoad(GV, TM)) {
       if (Subtarget->isPICStyleRIPRel()) {
         // Use rip-relative addressing if we can.  Above we verified that the
         // base and index registers are unused.
index 40cd608ef9e86169549ccea30295d5ab3f8e697e..a1bd81b22fc5f4283d23d148e8b741d16932bd3b 100644 (file)
@@ -4554,7 +4554,7 @@ X86TargetLowering::LowerGlobalAddress(const GlobalValue *GV, DebugLoc dl,
                                       SelectionDAG &DAG) const {
   bool IsPIC = getTargetMachine().getRelocationModel() == Reloc::PIC_;
   bool ExtraLoadRequired =
-    Subtarget->GVRequiresExtraLoad(GV, getTargetMachine(), false);
+    Subtarget->GVRequiresExtraLoad(GV, getTargetMachine());
 
   // Create the TargetGlobalAddress node, folding in the constant
   // offset if it is legal.
@@ -7075,7 +7075,7 @@ bool X86TargetLowering::isLegalAddressingMode(const AddrMode &AM,
 
   if (AM.BaseGV) {
     // We can only fold this if we don't need an extra load.
-    if (Subtarget->GVRequiresExtraLoad(AM.BaseGV, getTargetMachine(), false))
+    if (Subtarget->GVRequiresExtraLoad(AM.BaseGV, getTargetMachine()))
       return false;
     // If BaseGV requires a register, we cannot also have a BaseReg.
     if (Subtarget->GVRequiresRegister(AM.BaseGV, getTargetMachine()) &&
@@ -8841,8 +8841,7 @@ void X86TargetLowering::LowerAsmOperandForConstraint(SDValue Op,
     }
     // If we require an extra load to get this address, as in PIC mode, we
     // can't accept it.
-    if (Subtarget->GVRequiresExtraLoad(GA->getGlobal(), getTargetMachine(),
-                                       false))
+    if (Subtarget->GVRequiresExtraLoad(GA->getGlobal(), getTargetMachine()))
       return;
 
     if (hasMemory)
index c2cd04c896a159648bc4df1d52e4d1690c733125..9f799fc73ae3c2465f993659f35d820042a32045 100644 (file)
@@ -781,7 +781,7 @@ static bool regIsPICBase(unsigned BaseReg, const MachineRegisterInfo &MRI) {
 /// isGVStub - Return true if the GV requires an extra load to get the
 /// real address.
 static inline bool isGVStub(GlobalValue *GV, X86TargetMachine &TM) {
-  return TM.getSubtarget<X86Subtarget>().GVRequiresExtraLoad(GV, TM, false);
+  return TM.getSubtarget<X86Subtarget>().GVRequiresExtraLoad(GV, TM);
 }
 
 /// CanRematLoadWithDispOperand - Return true if a load with the specified
index d966e34de77cc4a2b9b2c18d4ea4b329b8d44522..d16319b9e4ecc3e582ac86cd61e7056fcca08284 100644 (file)
@@ -39,8 +39,7 @@ AsmWriterFlavor("x86-asm-syntax", cl::init(X86Subtarget::Unset),
 /// value of GV itself. This means that the GlobalAddress must be in the base
 /// or index register of the address, not the GV offset field.
 bool X86Subtarget::GVRequiresExtraLoad(const GlobalValue *GV,
-                                       const TargetMachine &TM,
-                                       bool isDirectCall) const {
+                                       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())
@@ -51,8 +50,6 @@ bool X86Subtarget::GVRequiresExtraLoad(const GlobalValue *GV,
     return false;
     
   if (isTargetDarwin()) {
-    if (isDirectCall)
-      return false;
     bool isDecl = GV->isDeclaration() && !GV->hasNotBeenReadFromBitcode();
     if (GV->hasHiddenVisibility() &&
         (Is64Bit || (!isDecl && !GV->hasCommonLinkage())))
@@ -60,11 +57,9 @@ bool X86Subtarget::GVRequiresExtraLoad(const GlobalValue *GV,
       // target is x86-64 or the symbol is definitely defined in the current
       // translation unit.
       return false;
-    return !isDirectCall && (isDecl || GV->isWeakForLinker());
+    return isDecl || GV->isWeakForLinker();
   } else if (isTargetELF()) {
     // Extra load is needed for all externally visible.
-    if (isDirectCall)
-      return false;
     if (GV->hasLocalLinkage() || GV->hasHiddenVisibility())
       return false;
     return true;
@@ -77,7 +72,7 @@ bool X86Subtarget::GVRequiresExtraLoad(const GlobalValue *GV,
 /// a register, but not an extra load.
 bool X86Subtarget::GVRequiresRegister(const GlobalValue *GV,
                                       const TargetMachine &TM) const {
-  if (GVRequiresExtraLoad(GV, TM, false))
+  if (GVRequiresExtraLoad(GV, TM))
     return true;
   
   // Code below here need only consider cases where GVRequiresExtraLoad
index 7148d0d8b67a77caa5ecdd5dcb29ddafe73af912..1fe612a8c903b9c7f4eca3e5f95c944de74ff2e4 100644 (file)
@@ -201,8 +201,7 @@ public:
   /// symbols are indirect, loading the value at address GV rather then the
   /// value of GV itself. This means that the GlobalAddress must be in the base
   /// or index register of the address, not the GV offset field.
-  bool GVRequiresExtraLoad(const GlobalValue* GV, const TargetMachine &TM,
-                           bool isDirectCall) const;
+  bool GVRequiresExtraLoad(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