[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