diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/Target/Mips/MipsISelLowering.cpp | 40 | ||||
| -rw-r--r-- | llvm/lib/Target/Mips/MipsISelLowering.h | 2 | ||||
| -rw-r--r-- | llvm/lib/Target/Mips/MipsSubtarget.cpp | 7 | ||||
| -rw-r--r-- | llvm/lib/Target/Mips/MipsSubtarget.h | 5 | 
4 files changed, 1 insertions, 53 deletions
diff --git a/llvm/lib/Target/Mips/MipsISelLowering.cpp b/llvm/lib/Target/Mips/MipsISelLowering.cpp index 3487b74a2c9..f6d171b367a 100644 --- a/llvm/lib/Target/Mips/MipsISelLowering.cpp +++ b/llvm/lib/Target/Mips/MipsISelLowering.cpp @@ -216,37 +216,6 @@ AddLiveIn(MachineFunction &MF, unsigned PReg, TargetRegisterClass *RC)    return VReg;  } -// A address must be loaded from a small section if its size is less than the  -// small section size threshold. Data in this section must be addressed using  -// gp_rel operator. -bool MipsTargetLowering::IsInSmallSection(unsigned Size) { -  return (Size > 0 && (Size <= Subtarget->getSSectionThreshold())); -} - -// Discover if this global address can be placed into small data/bss section.  -bool MipsTargetLowering::IsGlobalInSmallSection(GlobalValue *GV) -{ -  const TargetData *TD = getTargetData(); -  const GlobalVariable *GVA = dyn_cast<GlobalVariable>(GV); - -  if (!GVA) -    return false; -   -  const Type *Ty = GV->getType()->getElementType(); -  unsigned Size = TD->getTypeAllocSize(Ty); - -  // if this is a internal constant string, there is a special -  // section for it, but not in small data/bss. -  if (GVA->hasInitializer() && GV->hasLocalLinkage()) { -    Constant *C = GVA->getInitializer(); -    const ConstantArray *CVA = dyn_cast<ConstantArray>(C); -    if (CVA && CVA->isCString())  -      return false; -  } - -  return IsInSmallSection(Size); -} -  // Get fp branch code (not opcode) from condition code.  static Mips::FPBranchCode GetFPBranchCodeFromCond(Mips::CondCode CC) {    if (CC >= Mips::FCOND_F && CC <= Mips::FCOND_NGT) @@ -532,15 +501,8 @@ LowerGlobalAddress(SDValue Op, SelectionDAG &DAG)    if (!Subtarget->hasABICall()) {      SDVTList VTs = DAG.getVTList(MVT::i32); -    SDValue Ops[] = { GA }; -    // %gp_rel relocation -    if (!isa<Function>(GV) && IsGlobalInSmallSection(GV)) {  -      SDValue GPRelNode = DAG.getNode(MipsISD::GPRel, dl, VTs, Ops, 1); -      SDValue GOT = DAG.getGLOBAL_OFFSET_TABLE(MVT::i32); -      return DAG.getNode(ISD::ADD, dl, MVT::i32, GOT, GPRelNode);  -    }      // %hi/%lo relocation -    SDValue HiPart = DAG.getNode(MipsISD::Hi, dl, VTs, Ops, 1); +    SDValue HiPart = DAG.getNode(MipsISD::Hi, dl, VTs, &GA, 1);      SDValue Lo = DAG.getNode(MipsISD::Lo, dl, MVT::i32, GA);      return DAG.getNode(ISD::ADD, dl, MVT::i32, HiPart, Lo); diff --git a/llvm/lib/Target/Mips/MipsISelLowering.h b/llvm/lib/Target/Mips/MipsISelLowering.h index 9ad4895ce6e..234eddd2629 100644 --- a/llvm/lib/Target/Mips/MipsISelLowering.h +++ b/llvm/lib/Target/Mips/MipsISelLowering.h @@ -91,8 +91,6 @@ namespace llvm {      // Lower Operand helpers      SDNode *LowerCallResult(SDValue Chain, SDValue InFlag, CallSDNode *TheCall,                              unsigned CallingConv, SelectionDAG &DAG); -    bool IsGlobalInSmallSection(GlobalValue *GV);  -    bool IsInSmallSection(unsigned Size);       // Lower Operand specifics      SDValue LowerANDOR(SDValue Op, SelectionDAG &DAG); diff --git a/llvm/lib/Target/Mips/MipsSubtarget.cpp b/llvm/lib/Target/Mips/MipsSubtarget.cpp index 4245f274f8f..87c2208e9d4 100644 --- a/llvm/lib/Target/Mips/MipsSubtarget.cpp +++ b/llvm/lib/Target/Mips/MipsSubtarget.cpp @@ -24,10 +24,6 @@ NotABICall("disable-mips-abicall", cl::Hidden,  static cl::opt<bool>  AbsoluteCall("enable-mips-absolute-call", cl::Hidden,               cl::desc("Enable absolute call within abicall")); -static cl::opt<unsigned> -SSThreshold("mips-ssection-threshold", cl::Hidden, -            cl::desc("Small data and bss section threshold size (default=8)"), -            cl::init(8));  MipsSubtarget::MipsSubtarget(const TargetMachine &TM, const Module &M,                                const std::string &FS, bool little) :  @@ -43,9 +39,6 @@ MipsSubtarget::MipsSubtarget(const TargetMachine &TM, const Module &M,    ParseSubtargetFeatures(FS, CPU);    const std::string& TT = M.getTargetTriple(); -  // Small section size threshold -  SSectionThreshold = SSThreshold; -    // Is the target system Linux ?    if (TT.find("linux") == std::string::npos)      IsLinux = false; diff --git a/llvm/lib/Target/Mips/MipsSubtarget.h b/llvm/lib/Target/Mips/MipsSubtarget.h index 61c37c1d377..2244e497dd7 100644 --- a/llvm/lib/Target/Mips/MipsSubtarget.h +++ b/llvm/lib/Target/Mips/MipsSubtarget.h @@ -68,10 +68,6 @@ protected:    // isLinux - Target system is Linux. Is false we consider ELFOS for now.    bool IsLinux; -  // Put global and static items less than or equal to SSectionThreshold  -  // bytes into the small data or bss section. The default is 8. -  unsigned SSectionThreshold; -    /// Features related to the presence of specific instructions.    // HasSEInReg - SEB and SEH (signext in register) instructions. @@ -124,7 +120,6 @@ public:    bool hasABICall() const { return HasABICall; };    bool hasAbsoluteCall() const { return HasAbsoluteCall; };    bool isLinux() const { return IsLinux; }; -  unsigned getSSectionThreshold() const { return SSectionThreshold; }    /// Features related to the presence of specific instructions.    bool hasSEInReg()   const { return HasSEInReg; };  | 

