[llvm-commits] [llvm] r77938 - in /llvm/trunk/lib/Target/Mips: MipsISelLowering.cpp MipsSubtarget.cpp MipsSubtarget.h MipsTargetAsmInfo.cpp MipsTargetMachine.cpp MipsTargetMachine.h

Bruno Cardoso Lopes bruno.cardoso at gmail.com
Sun Aug 2 19:49:46 PDT 2009


On Sun, Aug 2, 2009 at 11:22 PM, Eli Friedman<eli.friedman at gmail.com> wrote:
> Author: efriedma
> Date: Sun Aug  2 21:22:28 2009
> New Revision: 77938
>
> URL: http://llvm.org/viewvc/llvm-project?rev=77938&view=rev
> Log:
> Remove -disable-mips-abicall and -enable-mips-absolute-call command-line
> options, which don't appear to be useful.  -enable-mips-absolute-call is
> completely unused (and unless I'm mistaken, is supposed to have the
> same effect that -relocation-model=dynamic-no-pic should have),

Yes, you're right.

> and -disable-mips-abicall appears to be effectively a
> synonym for -relocation-model=static. Adjust the few users of hasABICall
> to checks which seem more appropriate.  Update MipsSubtarget,
> MipsTargetMachine, and MipselTargetMachine to synchronize with recent
> changes.

Thanks for the clean up! :)

>
>
> Modified:
>    llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp
>    llvm/trunk/lib/Target/Mips/MipsSubtarget.cpp
>    llvm/trunk/lib/Target/Mips/MipsSubtarget.h
>    llvm/trunk/lib/Target/Mips/MipsTargetAsmInfo.cpp
>    llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp
>    llvm/trunk/lib/Target/Mips/MipsTargetMachine.h
>
> Modified: llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp?rev=77938&r1=77937&r2=77938&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp Sun Aug  2 21:22:28 2009
> @@ -497,10 +497,9 @@
>   GlobalValue *GV = cast<GlobalAddressSDNode>(Op)->getGlobal();
>   SDValue GA = DAG.getTargetGlobalAddress(GV, MVT::i32);
>
> -  if (!Subtarget->hasABICall()) {
> -    SDVTList VTs = DAG.getVTList(MVT::i32);
> +  if (getTargetMachine().getRelocationModel() != Reloc::PIC_) {
>     // %hi/%lo relocation
> -    SDValue HiPart = DAG.getNode(MipsISD::Hi, dl, VTs, &GA, 1);
> +    SDValue HiPart = DAG.getNode(MipsISD::Hi, dl, MVT::i32, GA);
>     SDValue Lo = DAG.getNode(MipsISD::Lo, dl, MVT::i32, GA);
>     return DAG.getNode(ISD::ADD, dl, MVT::i32, HiPart, Lo);
>
> @@ -566,8 +565,7 @@
>   // but the asm printer currently doens't support this feature without
>   // hacking it. This feature should come soon so we can uncomment the
>   // stuff below.
> -  //if (!Subtarget->hasABICall() &&
> -  //    IsInSmallSection(getTargetData()->getTypeAllocSize(C->getType()))) {
> +  //if (IsInSmallSection(C->getType())) {
>   //  SDValue GPRelNode = DAG.getNode(MipsISD::GPRel, MVT::i32, CP);
>   //  SDValue GOT = DAG.getGLOBAL_OFFSET_TABLE(MVT::i32);
>   //  ResNode = DAG.getNode(ISD::ADD, MVT::i32, GOT, GPRelNode);
>
> Modified: llvm/trunk/lib/Target/Mips/MipsSubtarget.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsSubtarget.cpp?rev=77938&r1=77937&r2=77938&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsSubtarget.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/MipsSubtarget.cpp Sun Aug  2 21:22:28 2009
> @@ -17,19 +17,12 @@
>  #include "llvm/Support/CommandLine.h"
>  using namespace llvm;
>
> -static cl::opt<bool>
> -NotABICall("disable-mips-abicall", cl::Hidden,
> -           cl::desc("Disable code for SVR4-style dynamic objects"));
> -static cl::opt<bool>
> -AbsoluteCall("enable-mips-absolute-call", cl::Hidden,
> -             cl::desc("Enable absolute call within abicall"));
> -
> -MipsSubtarget::MipsSubtarget(const TargetMachine &TM, const std::string &TT,
> -                             const std::string &FS, bool little) :
> +MipsSubtarget::MipsSubtarget(const std::string &TT, const std::string &FS,
> +                             bool little) :
>   MipsArchVersion(Mips1), MipsABI(O32), IsLittle(little), IsSingleFloat(false),
> -  IsFP64bit(false), IsGP64bit(false), HasVFPU(false), HasABICall(true),
> -  HasAbsoluteCall(false), IsLinux(true), HasSEInReg(false), HasCondMov(false),
> -  HasMulDivAdd(false), HasMinMax(false), HasSwap(false), HasBitCount(false)
> +  IsFP64bit(false), IsGP64bit(false), HasVFPU(false), IsLinux(true),
> +  HasSEInReg(false), HasCondMov(false), HasMulDivAdd(false), HasMinMax(false),
> +  HasSwap(false), HasBitCount(false)
>  {
>   std::string CPU = "mips1";
>   MipsArchVersion = Mips1;
> @@ -56,13 +49,4 @@
>     HasSwap = true;
>     HasCondMov = true;
>   }
> -
> -  // Abicall is the default for O32 ABI, but is disabled within EABI and in
> -  // static code.
> -  if (NotABICall || isABI_EABI() || (TM.getRelocationModel() == Reloc::Static))
> -    HasABICall = false;
> -
> -  // TODO: disable when handling 64 bit symbols in the future.
> -  if (HasABICall && AbsoluteCall)
> -    HasAbsoluteCall = true;
>  }
>
> Modified: llvm/trunk/lib/Target/Mips/MipsSubtarget.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsSubtarget.h?rev=77938&r1=77937&r2=77938&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsSubtarget.h (original)
> +++ llvm/trunk/lib/Target/Mips/MipsSubtarget.h Sun Aug  2 21:22:28 2009
> @@ -57,13 +57,6 @@
>   // HasVFPU - Processor has a vector floating point unit.
>   bool HasVFPU;
>
> -  // IsABICall - Enable SRV4 code for SVR4-style dynamic objects
> -  bool HasABICall;
> -
> -  // HasAbsoluteCall - Enable code that is not fully position-independent.
> -  // Only works with HasABICall enabled.
> -  bool HasAbsoluteCall;
> -
>   // isLinux - Target system is Linux. Is false we consider ELFOS for now.
>   bool IsLinux;
>
> @@ -99,8 +92,7 @@
>
>   /// This constructor initializes the data members to match that
>   /// of the specified triple.
> -  MipsSubtarget(const TargetMachine &TM, const std::string &TT,
> -                const std::string &FS, bool little);
> +  MipsSubtarget(const std::string &TT, const std::string &FS, bool little);
>
>   /// ParseSubtargetFeatures - Parses features string setting specified
>   /// subtarget options.  Definition of function is auto generated by tblgen.
> @@ -116,8 +108,6 @@
>   bool isSingleFloat() const { return IsSingleFloat; };
>   bool isNotSingleFloat() const { return !IsSingleFloat; };
>   bool hasVFPU() const { return HasVFPU; };
> -  bool hasABICall() const { return HasABICall; };
> -  bool hasAbsoluteCall() const { return HasAbsoluteCall; };
>   bool isLinux() const { return IsLinux; };
>
>   /// Features related to the presence of specific instructions.
>
> Modified: llvm/trunk/lib/Target/Mips/MipsTargetAsmInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsTargetAsmInfo.cpp?rev=77938&r1=77937&r2=77938&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsTargetAsmInfo.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/MipsTargetAsmInfo.cpp Sun Aug  2 21:22:28 2009
> @@ -25,8 +25,6 @@
>   CommentString               = "#";
>   ZeroDirective               = "\t.space\t";
>
> -  if (!TM.getSubtarget<MipsSubtarget>().hasABICall())
> -    JumpTableDirective = "\t.word\t";
> -  else
> +  if (TM.getRelocationModel() == Reloc::PIC_)
>     JumpTableDirective = "\t.gpword\t";
>  }
>
> Modified: llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp?rev=77938&r1=77937&r2=77938&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp Sun Aug  2 21:22:28 2009
> @@ -20,8 +20,8 @@
>
>  extern "C" void LLVMInitializeMipsTarget() {
>   // Register the target.
> -  RegisterTargetMachineDeprecated<MipsTargetMachine> X(TheMipsTarget);
> -  RegisterTargetMachineDeprecated<MipselTargetMachine> Y(TheMipselTarget);
> +  RegisterTargetMachine<MipsTargetMachine> X(TheMipsTarget);
> +  RegisterTargetMachine<MipselTargetMachine> Y(TheMipselTarget);
>  }
>
>  const TargetAsmInfo *MipsTargetMachine::
> @@ -38,10 +38,10 @@
>  // an easier handling.
>  // Using CodeModel::Large enables different CALL behavior.
>  MipsTargetMachine::
> -MipsTargetMachine(const Target &T, const Module &M, const std::string &FS,
> +MipsTargetMachine(const Target &T, const std::string &TT, const std::string &FS,
>                   bool isLittle=false):
>   LLVMTargetMachine(T),
> -  Subtarget(*this, M.getTargetTriple(), FS, isLittle),
> +  Subtarget(TT, FS, isLittle),
>   DataLayout(isLittle ? std::string("e-p:32:32:32-i8:8:32-i16:16:32") :
>                         std::string("E-p:32:32:32-i8:8:32-i16:16:32")),
>   InstrInfo(*this),
> @@ -49,8 +49,12 @@
>   TLInfo(*this)
>  {
>   // Abicall enables PIC by default
> -  if (Subtarget.hasABICall())
> -    setRelocationModel(Reloc::PIC_);
> +  if (getRelocationModel() == Reloc::Default) {
> +    if (Subtarget.isABI_O32())
> +      setRelocationModel(Reloc::PIC_);
> +    else
> +      setRelocationModel(Reloc::Static);
> +  }
>
>   // TODO: create an option to enable long calls, like -mlong-calls,
>   // that would be our CodeModel::Large. It must not work with Abicall.
> @@ -59,8 +63,9 @@
>  }
>
>  MipselTargetMachine::
> -MipselTargetMachine(const Target &T, const Module &M, const std::string &FS) :
> -  MipsTargetMachine(T, M, FS, true) {}
> +MipselTargetMachine(const Target &T, const std::string &TT,
> +                    const std::string &FS) :
> +  MipsTargetMachine(T, TT, FS, true) {}
>
>  // Install an instruction selector pass using
>  // the ISelDag to gen Mips code.
>
> Modified: llvm/trunk/lib/Target/Mips/MipsTargetMachine.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsTargetMachine.h?rev=77938&r1=77937&r2=77938&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsTargetMachine.h (original)
> +++ llvm/trunk/lib/Target/Mips/MipsTargetMachine.h Sun Aug  2 21:22:28 2009
> @@ -35,7 +35,7 @@
>     virtual const TargetAsmInfo *createTargetAsmInfo() const;
>
>   public:
> -    MipsTargetMachine(const Target &T, const Module &M,
> +    MipsTargetMachine(const Target &T, const std::string &TT,
>                       const std::string &FS, bool isLittle);
>
>     virtual const MipsInstrInfo   *getInstrInfo()     const
> @@ -66,7 +66,8 @@
>  ///
>  class MipselTargetMachine : public MipsTargetMachine {
>  public:
> -  MipselTargetMachine(const Target &T, const Module &M, const std::string &FS);
> +  MipselTargetMachine(const Target &T, const std::string &TT,
> +                      const std::string &FS);
>  };
>
>  } // End llvm namespace
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>



-- 
Bruno Cardoso Lopes
http://www.brunocardoso.cc




More information about the llvm-commits mailing list