diff options
Diffstat (limited to 'contrib/llvm/tools/clang/lib/Driver/Tools.h')
-rw-r--r-- | contrib/llvm/tools/clang/lib/Driver/Tools.h | 524 |
1 files changed, 255 insertions, 269 deletions
diff --git a/contrib/llvm/tools/clang/lib/Driver/Tools.h b/contrib/llvm/tools/clang/lib/Driver/Tools.h index d5b2848..4c89676 100644 --- a/contrib/llvm/tools/clang/lib/Driver/Tools.h +++ b/contrib/llvm/tools/clang/lib/Driver/Tools.h @@ -25,10 +25,15 @@ namespace driver { class Driver; namespace toolchains { - class Darwin; + class MachO; } namespace tools { + +namespace visualstudio { + class Compile; +} + using llvm::opt::ArgStringList; /// \brief Clang compiler tool. @@ -54,6 +59,8 @@ using llvm::opt::ArgStringList; void AddARMTargetArgs(const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs, bool KernelOrKext) const; + void AddARM64TargetArgs(const llvm::opt::ArgList &Args, + llvm::opt::ArgStringList &CmdArgs) const; void AddMIPSTargetArgs(const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs) const; void AddR600TargetArgs(const llvm::opt::ArgList &Args, @@ -76,18 +83,21 @@ using llvm::opt::ArgStringList; void AddClangCLArgs(const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs) const; + visualstudio::Compile *getCLFallback() const; + + mutable std::unique_ptr<visualstudio::Compile> CLFallback; + public: Clang(const ToolChain &TC) : Tool("clang", "clang frontend", TC) {} - virtual bool hasGoodDiagnostics() const { return true; } - virtual bool hasIntegratedAssembler() const { return true; } - virtual bool hasIntegratedCPP() const { return true; } + bool hasGoodDiagnostics() const override { return true; } + bool hasIntegratedAssembler() const override { return true; } + bool hasIntegratedCPP() const override { return true; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; /// \brief Clang integrated assembler tool. @@ -96,15 +106,14 @@ using llvm::opt::ArgStringList; ClangAs(const ToolChain &TC) : Tool("clang::as", "clang integrated assembler", TC) {} - virtual bool hasGoodDiagnostics() const { return true; } - virtual bool hasIntegratedAssembler() const { return false; } - virtual bool hasIntegratedCPP() const { return false; } + bool hasGoodDiagnostics() const override { return true; } + bool hasIntegratedAssembler() const override { return false; } + bool hasIntegratedCPP() const override { return false; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; /// gcc - Generic GCC tool implementations. @@ -114,11 +123,11 @@ namespace gcc { Common(const char *Name, const char *ShortName, const ToolChain &TC) : Tool(Name, ShortName, TC) {} - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, + const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; /// RenderExtraToolArgs - Render any arguments necessary to force /// the particular tool mode. @@ -132,23 +141,11 @@ namespace gcc { Preprocess(const ToolChain &TC) : Common("gcc::Preprocess", "gcc preprocessor", TC) {} - virtual bool hasGoodDiagnostics() const { return true; } - virtual bool hasIntegratedCPP() const { return false; } + bool hasGoodDiagnostics() const override { return true; } + bool hasIntegratedCPP() const override { return false; } - virtual void RenderExtraToolArgs(const JobAction &JA, - llvm::opt::ArgStringList &CmdArgs) const; - }; - - class LLVM_LIBRARY_VISIBILITY Precompile : public Common { - public: - Precompile(const ToolChain &TC) : Common("gcc::Precompile", - "gcc precompile", TC) {} - - virtual bool hasGoodDiagnostics() const { return true; } - virtual bool hasIntegratedCPP() const { return true; } - - virtual void RenderExtraToolArgs(const JobAction &JA, - llvm::opt::ArgStringList &CmdArgs) const; + void RenderExtraToolArgs(const JobAction &JA, + llvm::opt::ArgStringList &CmdArgs) const override; }; class LLVM_LIBRARY_VISIBILITY Compile : public Common { @@ -156,22 +153,11 @@ namespace gcc { Compile(const ToolChain &TC) : Common("gcc::Compile", "gcc frontend", TC) {} - virtual bool hasGoodDiagnostics() const { return true; } - virtual bool hasIntegratedCPP() const { return true; } + bool hasGoodDiagnostics() const override { return true; } + bool hasIntegratedCPP() const override { return true; } - virtual void RenderExtraToolArgs(const JobAction &JA, - llvm::opt::ArgStringList &CmdArgs) const; - }; - - class LLVM_LIBRARY_VISIBILITY Assemble : public Common { - public: - Assemble(const ToolChain &TC) : Common("gcc::Assemble", - "assembler (via gcc)", TC) {} - - virtual bool hasIntegratedCPP() const { return false; } - - virtual void RenderExtraToolArgs(const JobAction &JA, - llvm::opt::ArgStringList &CmdArgs) const; + void RenderExtraToolArgs(const JobAction &JA, + llvm::opt::ArgStringList &CmdArgs) const override; }; class LLVM_LIBRARY_VISIBILITY Link : public Common { @@ -179,11 +165,11 @@ namespace gcc { Link(const ToolChain &TC) : Common("gcc::Link", "linker (via gcc)", TC) {} - virtual bool hasIntegratedCPP() const { return false; } - virtual bool isLinkJob() const { return true; } + bool hasIntegratedCPP() const override { return false; } + bool isLinkJob() const override { return true; } - virtual void RenderExtraToolArgs(const JobAction &JA, - llvm::opt::ArgStringList &CmdArgs) const; + void RenderExtraToolArgs(const JobAction &JA, + llvm::opt::ArgStringList &CmdArgs) const override; }; } // end namespace gcc @@ -195,15 +181,14 @@ namespace hexagon { Assemble(const ToolChain &TC) : Tool("hexagon::Assemble", "hexagon-as", TC) {} - virtual bool hasIntegratedCPP() const { return false; } + bool hasIntegratedCPP() const override { return false; } - virtual void RenderExtraToolArgs(const JobAction &JA, - llvm::opt::ArgStringList &CmdArgs) const; - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void RenderExtraToolArgs(const JobAction &JA, + llvm::opt::ArgStringList &CmdArgs) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; class LLVM_LIBRARY_VISIBILITY Link : public Tool { @@ -211,111 +196,124 @@ namespace hexagon { Link(const ToolChain &TC) : Tool("hexagon::Link", "hexagon-ld", TC) {} - virtual bool hasIntegratedCPP() const { return false; } - virtual bool isLinkJob() const { return true; } + bool hasIntegratedCPP() const override { return false; } + bool isLinkJob() const override { return true; } virtual void RenderExtraToolArgs(const JobAction &JA, llvm::opt::ArgStringList &CmdArgs) const; - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; } // end namespace hexagon. +namespace arm { + StringRef getARMTargetCPU(const llvm::opt::ArgList &Args, + const llvm::Triple &Triple); + const char* getARMCPUForMArch(const llvm::opt::ArgList &Args, + const llvm::Triple &Triple); + const char* getLLVMArchSuffixForARM(StringRef CPU); +} + +namespace mips { + void getMipsCPUAndABI(const llvm::opt::ArgList &Args, + const llvm::Triple &Triple, StringRef &CPUName, + StringRef &ABIName); + bool hasMipsAbiArg(const llvm::opt::ArgList &Args, const char *Value); + bool isNaN2008(const llvm::opt::ArgList &Args, const llvm::Triple &Triple); + bool isFPXXDefault(const llvm::Triple &Triple, StringRef CPUName, + StringRef ABIName); +} namespace darwin { - llvm::Triple::ArchType getArchTypeForDarwinArchName(StringRef Str); + llvm::Triple::ArchType getArchTypeForMachOArchName(StringRef Str); + void setTripleTypeForMachOArchName(llvm::Triple &T, StringRef Str); - class LLVM_LIBRARY_VISIBILITY DarwinTool : public Tool { + class LLVM_LIBRARY_VISIBILITY MachOTool : public Tool { virtual void anchor(); protected: - void AddDarwinArch(const llvm::opt::ArgList &Args, + void AddMachOArch(const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs) const; - const toolchains::Darwin &getDarwinToolChain() const { - return reinterpret_cast<const toolchains::Darwin&>(getToolChain()); + const toolchains::MachO &getMachOToolChain() const { + return reinterpret_cast<const toolchains::MachO&>(getToolChain()); } public: - DarwinTool(const char *Name, const char *ShortName, + MachOTool(const char *Name, const char *ShortName, const ToolChain &TC) : Tool(Name, ShortName, TC) {} }; - class LLVM_LIBRARY_VISIBILITY Assemble : public DarwinTool { + class LLVM_LIBRARY_VISIBILITY Assemble : public MachOTool { public: - Assemble(const ToolChain &TC) : DarwinTool("darwin::Assemble", - "assembler", TC) {} + Assemble(const ToolChain &TC) : MachOTool("darwin::Assemble", + "assembler", TC) {} - virtual bool hasIntegratedCPP() const { return false; } + bool hasIntegratedCPP() const override { return false; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; - class LLVM_LIBRARY_VISIBILITY Link : public DarwinTool { + class LLVM_LIBRARY_VISIBILITY Link : public MachOTool { bool NeedsTempPath(const InputInfoList &Inputs) const; void AddLinkArgs(Compilation &C, const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs, const InputInfoList &Inputs) const; public: - Link(const ToolChain &TC) : DarwinTool("darwin::Link", "linker", TC) {} + Link(const ToolChain &TC) : MachOTool("darwin::Link", "linker", TC) {} - virtual bool hasIntegratedCPP() const { return false; } - virtual bool isLinkJob() const { return true; } + bool hasIntegratedCPP() const override { return false; } + bool isLinkJob() const override { return true; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; - class LLVM_LIBRARY_VISIBILITY Lipo : public DarwinTool { + class LLVM_LIBRARY_VISIBILITY Lipo : public MachOTool { public: - Lipo(const ToolChain &TC) : DarwinTool("darwin::Lipo", "lipo", TC) {} + Lipo(const ToolChain &TC) : MachOTool("darwin::Lipo", "lipo", TC) {} - virtual bool hasIntegratedCPP() const { return false; } + bool hasIntegratedCPP() const override { return false; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; - class LLVM_LIBRARY_VISIBILITY Dsymutil : public DarwinTool { + class LLVM_LIBRARY_VISIBILITY Dsymutil : public MachOTool { public: - Dsymutil(const ToolChain &TC) : DarwinTool("darwin::Dsymutil", - "dsymutil", TC) {} + Dsymutil(const ToolChain &TC) : MachOTool("darwin::Dsymutil", + "dsymutil", TC) {} - virtual bool hasIntegratedCPP() const { return false; } - virtual bool isDsymutilJob() const { return true; } + bool hasIntegratedCPP() const override { return false; } + bool isDsymutilJob() const override { return true; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, + const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; - class LLVM_LIBRARY_VISIBILITY VerifyDebug : public DarwinTool { + class LLVM_LIBRARY_VISIBILITY VerifyDebug : public MachOTool { public: - VerifyDebug(const ToolChain &TC) : DarwinTool("darwin::VerifyDebug", - "dwarfdump", TC) {} + VerifyDebug(const ToolChain &TC) : MachOTool("darwin::VerifyDebug", + "dwarfdump", TC) {} - virtual bool hasIntegratedCPP() const { return false; } + bool hasIntegratedCPP() const override { return false; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; } @@ -327,26 +325,25 @@ namespace openbsd { Assemble(const ToolChain &TC) : Tool("openbsd::Assemble", "assembler", TC) {} - virtual bool hasIntegratedCPP() const { return false; } + bool hasIntegratedCPP() const override { return false; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, + const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; class LLVM_LIBRARY_VISIBILITY Link : public Tool { public: Link(const ToolChain &TC) : Tool("openbsd::Link", "linker", TC) {} - virtual bool hasIntegratedCPP() const { return false; } - virtual bool isLinkJob() const { return true; } + bool hasIntegratedCPP() const override { return false; } + bool isLinkJob() const override { return true; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; } // end namespace openbsd @@ -357,26 +354,24 @@ namespace bitrig { Assemble(const ToolChain &TC) : Tool("bitrig::Assemble", "assembler", TC) {} - virtual bool hasIntegratedCPP() const { return false; } + bool hasIntegratedCPP() const override { return false; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; class LLVM_LIBRARY_VISIBILITY Link : public Tool { public: Link(const ToolChain &TC) : Tool("bitrig::Link", "linker", TC) {} - virtual bool hasIntegratedCPP() const { return false; } - virtual bool isLinkJob() const { return true; } + bool hasIntegratedCPP() const override { return false; } + bool isLinkJob() const override { return true; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; } // end namespace bitrig @@ -387,26 +382,24 @@ namespace freebsd { Assemble(const ToolChain &TC) : Tool("freebsd::Assemble", "assembler", TC) {} - virtual bool hasIntegratedCPP() const { return false; } + bool hasIntegratedCPP() const override { return false; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; class LLVM_LIBRARY_VISIBILITY Link : public Tool { public: Link(const ToolChain &TC) : Tool("freebsd::Link", "linker", TC) {} - virtual bool hasIntegratedCPP() const { return false; } - virtual bool isLinkJob() const { return true; } + bool hasIntegratedCPP() const override { return false; } + bool isLinkJob() const override { return true; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; } // end namespace freebsd @@ -418,13 +411,12 @@ namespace netbsd { Assemble(const ToolChain &TC) : Tool("netbsd::Assemble", "assembler", TC) {} - virtual bool hasIntegratedCPP() const { return false; } + bool hasIntegratedCPP() const override { return false; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; class LLVM_LIBRARY_VISIBILITY Link : public Tool { @@ -432,14 +424,13 @@ namespace netbsd { Link(const ToolChain &TC) : Tool("netbsd::Link", "linker", TC) {} - virtual bool hasIntegratedCPP() const { return false; } - virtual bool isLinkJob() const { return true; } + bool hasIntegratedCPP() const override { return false; } + bool isLinkJob() const override { return true; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; } // end namespace netbsd @@ -449,26 +440,26 @@ namespace gnutools { public: Assemble(const ToolChain &TC) : Tool("GNU::Assemble", "assembler", TC) {} - virtual bool hasIntegratedCPP() const { return false; } + bool hasIntegratedCPP() const override { return false; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, + const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; class LLVM_LIBRARY_VISIBILITY Link : public Tool { public: Link(const ToolChain &TC) : Tool("GNU::Link", "linker", TC) {} - virtual bool hasIntegratedCPP() const { return false; } - virtual bool isLinkJob() const { return true; } + bool hasIntegratedCPP() const override { return false; } + bool isLinkJob() const override { return true; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, + const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; } /// minix -- Directly call GNU Binutils assembler and linker @@ -478,26 +469,26 @@ namespace minix { Assemble(const ToolChain &TC) : Tool("minix::Assemble", "assembler", TC) {} - virtual bool hasIntegratedCPP() const { return false; } + bool hasIntegratedCPP() const override { return false; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, + const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; class LLVM_LIBRARY_VISIBILITY Link : public Tool { public: Link(const ToolChain &TC) : Tool("minix::Link", "linker", TC) {} - virtual bool hasIntegratedCPP() const { return false; } - virtual bool isLinkJob() const { return true; } + bool hasIntegratedCPP() const override { return false; } + bool isLinkJob() const override { return true; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, + const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; } // end namespace minix @@ -508,26 +499,24 @@ namespace solaris { Assemble(const ToolChain &TC) : Tool("solaris::Assemble", "assembler", TC) {} - virtual bool hasIntegratedCPP() const { return false; } + bool hasIntegratedCPP() const override { return false; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; class LLVM_LIBRARY_VISIBILITY Link : public Tool { public: Link(const ToolChain &TC) : Tool("solaris::Link", "linker", TC) {} - virtual bool hasIntegratedCPP() const { return false; } - virtual bool isLinkJob() const { return true; } + bool hasIntegratedCPP() const override { return false; } + bool isLinkJob() const override { return true; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; } // end namespace solaris @@ -538,26 +527,24 @@ namespace auroraux { Assemble(const ToolChain &TC) : Tool("auroraux::Assemble", "assembler", TC) {} - virtual bool hasIntegratedCPP() const { return false; } + bool hasIntegratedCPP() const override { return false; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; class LLVM_LIBRARY_VISIBILITY Link : public Tool { public: Link(const ToolChain &TC) : Tool("auroraux::Link", "linker", TC) {} - virtual bool hasIntegratedCPP() const { return false; } - virtual bool isLinkJob() const { return true; } + bool hasIntegratedCPP() const override { return false; } + bool isLinkJob() const override { return true; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; } // end namespace auroraux @@ -568,58 +555,55 @@ namespace dragonfly { Assemble(const ToolChain &TC) : Tool("dragonfly::Assemble", "assembler", TC) {} - virtual bool hasIntegratedCPP() const { return false; } + bool hasIntegratedCPP() const override { return false; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; class LLVM_LIBRARY_VISIBILITY Link : public Tool { public: Link(const ToolChain &TC) : Tool("dragonfly::Link", "linker", TC) {} - virtual bool hasIntegratedCPP() const { return false; } - virtual bool isLinkJob() const { return true; } + bool hasIntegratedCPP() const override { return false; } + bool isLinkJob() const override { return true; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, + const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; } // end namespace dragonfly - /// Visual studio tools. +/// Visual studio tools. namespace visualstudio { class LLVM_LIBRARY_VISIBILITY Link : public Tool { public: Link(const ToolChain &TC) : Tool("visualstudio::Link", "linker", TC) {} - virtual bool hasIntegratedCPP() const { return false; } - virtual bool isLinkJob() const { return true; } + bool hasIntegratedCPP() const override { return false; } + bool isLinkJob() const override { return true; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; class LLVM_LIBRARY_VISIBILITY Compile : public Tool { public: Compile(const ToolChain &TC) : Tool("visualstudio::Compile", "compiler", TC) {} - virtual bool hasIntegratedAssembler() const { return true; } - virtual bool hasIntegratedCPP() const { return true; } - virtual bool isLinkJob() const { return false; } + bool hasIntegratedAssembler() const override { return true; } + bool hasIntegratedCPP() const override { return true; } + bool isLinkJob() const override { return false; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; Command *GetCommand(Compilation &C, const JobAction &JA, const InputInfo &Output, @@ -629,6 +613,10 @@ namespace visualstudio { }; } // end namespace visualstudio +namespace arm { + StringRef getARMFloatABI(const Driver &D, const llvm::opt::ArgList &Args, + const llvm::Triple &Triple); +} namespace XCore { // For XCore, we do not need to instantiate tools for PreProcess, PreCompile and Compile. // We simply use "clang -cc1" for those actions. @@ -637,12 +625,11 @@ namespace XCore { Assemble(const ToolChain &TC) : Tool("XCore::Assemble", "XCore-as", TC) {} - virtual bool hasIntegratedCPP() const { return false; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + bool hasIntegratedCPP() const override { return false; } + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; class LLVM_LIBRARY_VISIBILITY Link : public Tool { @@ -650,13 +637,12 @@ namespace XCore { Link(const ToolChain &TC) : Tool("XCore::Link", "XCore-ld", TC) {} - virtual bool hasIntegratedCPP() const { return false; } - virtual bool isLinkJob() const { return true; } - virtual void ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const llvm::opt::ArgList &TCArgs, - const char *LinkingOutput) const; + bool hasIntegratedCPP() const override { return false; } + bool isLinkJob() const override { return true; } + void ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, const InputInfoList &Inputs, + const llvm::opt::ArgList &TCArgs, + const char *LinkingOutput) const override; }; } // end namespace XCore. |