]> granicus.if.org Git - clang/commitdiff
Refactor a bit of duplicated code to useIntegratedAs.
authorRafael Espindola <rafael.espindola@gmail.com>
Mon, 18 Mar 2013 17:52:57 +0000 (17:52 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Mon, 18 Mar 2013 17:52:57 +0000 (17:52 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177299 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Driver/ToolChain.h
lib/Driver/Driver.cpp
lib/Driver/ToolChain.cpp
lib/Driver/ToolChains.cpp
lib/Driver/Tools.cpp
lib/Driver/WindowsToolChain.cpp

index 870ccc874e5a7bc4bd654f99b196ec5f0fa857e6..b04dbe61987292519108cf5cbde702bd086af616 100644 (file)
@@ -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; }
index 0b121b4089f041043121451a4285324f29167eb4..bd48b4845e5beac0da3efff2a15462cfb1f14782 100644 (file)
@@ -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<AssembleJobAction>(JA) &&
       Inputs->size() == 1 && isa<CompileJobAction>(*Inputs->begin())) {
index 21015a6c84a7d6bc1ebcff41fbe409f27630441b..29aecf2e2cb04840b42c9dcd5d10d641195ae730 100644 (file)
@@ -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
index c8038d18888f509d96f7db5b614e7256c941f53c..5b8f5c98065ebe64e0dda4c63ff846114dddd8a3 100644 (file)
@@ -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);
index f276031511614fcc20e6b18ae89f1600d53ed05c..96d10f53aed85f322fd10fd30821d8c93aa784d8 100644 (file)
@@ -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,
index 6d0d3283ac316dd01805957d3501a41bf2f09a4c..a0a71a7d4283bb3b10f57bfd868b6dece6719641 100644 (file)
@@ -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);