From 5470cd27e47aea163daaa76dde36010753400663 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Mon, 18 Mar 2013 17:52:57 +0000 Subject: [PATCH] Refactor a bit of duplicated code to useIntegratedAs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177299 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Driver/ToolChain.h | 2 ++ lib/Driver/Driver.cpp | 4 +--- lib/Driver/ToolChain.cpp | 6 ++++++ lib/Driver/ToolChains.cpp | 36 ++++++-------------------------- lib/Driver/Tools.cpp | 5 ++--- lib/Driver/WindowsToolChain.cpp | 7 ++----- 6 files changed, 19 insertions(+), 41 deletions(-) diff --git a/include/clang/Driver/ToolChain.h b/include/clang/Driver/ToolChain.h index 870ccc874e..b04dbe6198 100644 --- a/include/clang/Driver/ToolChain.h +++ b/include/clang/Driver/ToolChain.h @@ -137,6 +137,8 @@ public: /// by default. virtual bool IsIntegratedAssemblerDefault() const { return false; } + bool useIntegratedAs(const ArgList &Args) const; + /// IsStrictAliasingDefault - Does this tool chain use -fstrict-aliasing by /// default. virtual bool IsStrictAliasingDefault() const { return true; } diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp index 0b121b4089..bd48b4845e 100644 --- a/lib/Driver/Driver.cpp +++ b/lib/Driver/Driver.cpp @@ -1296,9 +1296,7 @@ static const Tool &SelectToolForJob(Compilation &C, const ToolChain *TC, // bottom up, so what we are actually looking for is an assembler job with a // compiler input. - if (C.getArgs().hasFlag(options::OPT_integrated_as, - options::OPT_no_integrated_as, - TC->IsIntegratedAssemblerDefault()) && + if (TC->useIntegratedAs(C.getArgs()) && !C.getArgs().hasArg(options::OPT_save_temps) && isa(JA) && Inputs->size() == 1 && isa(*Inputs->begin())) { diff --git a/lib/Driver/ToolChain.cpp b/lib/Driver/ToolChain.cpp index 21015a6c84..29aecf2e2c 100644 --- a/lib/Driver/ToolChain.cpp +++ b/lib/Driver/ToolChain.cpp @@ -32,6 +32,12 @@ const Driver &ToolChain::getDriver() const { return D; } +bool ToolChain::useIntegratedAs(const ArgList &Args) const { + return Args.hasFlag(options::OPT_integrated_as, + options::OPT_no_integrated_as, + IsIntegratedAssemblerDefault()); +} + std::string ToolChain::getDefaultUniversalArchName() const { // In universal driver terms, the arch name accepted by -arch isn't exactly // the same as the ones that appear in the triple. Roughly speaking, this is diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp index c8038d1888..5b8f5c9806 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp @@ -184,10 +184,6 @@ Tool &Darwin::SelectTool(const Compilation &C, const JobAction &JA) const { Key = Action::AnalyzeJobClass; } - bool UseIntegratedAs = C.getArgs().hasFlag(options::OPT_integrated_as, - options::OPT_no_integrated_as, - IsIntegratedAssemblerDefault()); - Tool *&T = Tools[Key]; if (!T) { switch (Key) { @@ -201,7 +197,7 @@ Tool &Darwin::SelectTool(const Compilation &C, const JobAction &JA) const { case Action::CompileJobClass: T = new tools::Clang(*this); break; case Action::AssembleJobClass: { - if (UseIntegratedAs) + if (useIntegratedAs(C.getArgs())) T = new tools::ClangAs(*this); else T = new tools::darwin::Assemble(*this); @@ -1733,15 +1729,11 @@ Tool &OpenBSD::SelectTool(const Compilation &C, const JobAction &JA) const { else Key = JA.getKind(); - bool UseIntegratedAs = C.getArgs().hasFlag(options::OPT_integrated_as, - options::OPT_no_integrated_as, - IsIntegratedAssemblerDefault()); - Tool *&T = Tools[Key]; if (!T) { switch (Key) { case Action::AssembleJobClass: { - if (UseIntegratedAs) + if (useIntegratedAs(C.getArgs())) T = new tools::ClangAs(*this); else T = new tools::openbsd::Assemble(*this); @@ -1772,15 +1764,11 @@ Tool &Bitrig::SelectTool(const Compilation &C, const JobAction &JA) const { else Key = JA.getKind(); - bool UseIntegratedAs = C.getArgs().hasFlag(options::OPT_integrated_as, - options::OPT_no_integrated_as, - IsIntegratedAssemblerDefault()); - Tool *&T = Tools[Key]; if (!T) { switch (Key) { case Action::AssembleJobClass: { - if (UseIntegratedAs) + if (useIntegratedAs(C.getArgs())) T = new tools::ClangAs(*this); else T = new tools::bitrig::Assemble(*this); @@ -1863,15 +1851,11 @@ Tool &FreeBSD::SelectTool(const Compilation &C, const JobAction &JA) const { else Key = JA.getKind(); - bool UseIntegratedAs = C.getArgs().hasFlag(options::OPT_integrated_as, - options::OPT_no_integrated_as, - IsIntegratedAssemblerDefault()); - Tool *&T = Tools[Key]; if (!T) { switch (Key) { case Action::AssembleJobClass: - if (UseIntegratedAs) + if (useIntegratedAs(C.getArgs())) T = new tools::ClangAs(*this); else T = new tools::freebsd::Assemble(*this); @@ -1924,15 +1908,11 @@ Tool &NetBSD::SelectTool(const Compilation &C, const JobAction &JA) const { else Key = JA.getKind(); - bool UseIntegratedAs = C.getArgs().hasFlag(options::OPT_integrated_as, - options::OPT_no_integrated_as, - IsIntegratedAssemblerDefault()); - Tool *&T = Tools[Key]; if (!T) { switch (Key) { case Action::AssembleJobClass: - if (UseIntegratedAs) + if (useIntegratedAs(C.getArgs())) T = new tools::ClangAs(*this); else T = new tools::netbsd::Assemble(*this); @@ -2427,15 +2407,11 @@ Tool &Linux::SelectTool(const Compilation &C, const JobAction &JA) const { else Key = JA.getKind(); - bool UseIntegratedAs = C.getArgs().hasFlag(options::OPT_integrated_as, - options::OPT_no_integrated_as, - IsIntegratedAssemblerDefault()); - Tool *&T = Tools[Key]; if (!T) { switch (Key) { case Action::AssembleJobClass: - if (UseIntegratedAs) + if (useIntegratedAs(C.getArgs())) T = new tools::ClangAs(*this); else T = new tools::linuxtools::Assemble(*this); diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index f276031511..96d10f53ae 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -1417,9 +1417,8 @@ static void addExceptionArgs(const ArgList &Args, types::ID InputType, /// \brief Check if the toolchain should use the integrated assembler. static bool ShouldUseIntegratedAssembler(const ArgList &Args, const ToolChain &TC) { - return Args.hasFlag(options::OPT_integrated_as, - options::OPT_no_integrated_as, - TC.IsIntegratedAssemblerDefault()); + // FIXME: inline + return TC.useIntegratedAs(Args); } static bool ShouldDisableCFI(const ArgList &Args, diff --git a/lib/Driver/WindowsToolChain.cpp b/lib/Driver/WindowsToolChain.cpp index 6d0d3283ac..a0a71a7d42 100644 --- a/lib/Driver/WindowsToolChain.cpp +++ b/lib/Driver/WindowsToolChain.cpp @@ -42,10 +42,6 @@ Tool &Windows::SelectTool(const Compilation &C, const JobAction &JA) const { else Key = JA.getKind(); - bool UseIntegratedAs = C.getArgs().hasFlag(options::OPT_integrated_as, - options::OPT_no_integrated_as, - IsIntegratedAssemblerDefault()); - Tool *&T = Tools[Key]; if (!T) { switch (Key) { @@ -61,7 +57,8 @@ Tool &Windows::SelectTool(const Compilation &C, const JobAction &JA) const { case Action::CompileJobClass: T = new tools::Clang(*this); break; case Action::AssembleJobClass: - if (!UseIntegratedAs && getTriple().getEnvironment() == llvm::Triple::MachO) + if (!useIntegratedAs(C.getArgs()) && + getTriple().getEnvironment() == llvm::Triple::MachO) T = new tools::darwin::Assemble(*this); else T = new tools::ClangAs(*this); -- 2.40.0