]> granicus.if.org Git - clang/commitdiff
Don't use the gcc driver for assembling.
authorRafael Espindola <rafael.espindola@gmail.com>
Sat, 23 Nov 2013 16:40:57 +0000 (16:40 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Sat, 23 Nov 2013 16:40:57 +0000 (16:40 +0000)
Clang knows how to use the gnu assembler directly from doing so on linux and
hurd. The existing support worked out of the box on cygwin and mingw and I was
able to bootstrap clang with it in both systems (with pending patches for the
new mingw abi, but that is independent of the assembler).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@195554 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/ToolChains.cpp
lib/Driver/Tools.cpp
lib/Driver/Tools.h
test/Driver/bindings.c
test/Driver/gcc_forward.c
test/Driver/target.c
test/Driver/unknown-gcc-arch.c

index e5528f0a646b32170c7c88b88e359d79aa4f4975..8888ba138d2b4fbfd8d5a0c8103d23fe5e32327f 100644 (file)
@@ -1594,7 +1594,7 @@ Tool *Generic_GCC::getTool(Action::ActionClass AC) const {
 }
 
 Tool *Generic_GCC::buildAssembler() const {
-  return new tools::gcc::Assemble(*this);
+  return new tools::gnutools::Assemble(*this);
 }
 
 Tool *Generic_GCC::buildLinker() const {
index bf35463066d744289aab6b3928759bd72d661730..2742332d6685497347ed8bd70b07ca16dc31f06e 100644 (file)
@@ -4285,11 +4285,6 @@ void gcc::Compile::RenderExtraToolArgs(const JobAction &JA,
   }
 }
 
-void gcc::Assemble::RenderExtraToolArgs(const JobAction &JA,
-                                        ArgStringList &CmdArgs) const {
-  CmdArgs.push_back("-c");
-}
-
 void gcc::Link::RenderExtraToolArgs(const JobAction &JA,
                                     ArgStringList &CmdArgs) const {
   // The types are (hopefully) good enough.
index d5b2848c9b01cd2976f4aa1df1ccc4530b621664..260b8c7ccce6d2e964a8e9b574b4c8ae2d77a70c 100644 (file)
@@ -163,17 +163,6 @@ namespace gcc {
                                      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;
-  };
-
   class LLVM_LIBRARY_VISIBILITY Link : public Common  {
   public:
     Link(const ToolChain &TC) : Common("gcc::Link",
index d25fc8f8afd6cec75715ba11649900518684d5d0..174a2650e5dbf9ed9446351dafb93d2152ea5934 100644 (file)
@@ -1,7 +1,7 @@
 // Basic binding.
 // RUN: %clang -target i386-unknown-unknown -ccc-print-bindings %s 2>&1 | FileCheck %s --check-prefix=CHECK01
 // CHECK01: "clang", inputs: ["{{.*}}bindings.c"], output: "{{.*}}.s"
-// CHECK01: "gcc::Assemble", inputs: ["{{.*}}.s"], output: "{{.*}}.o"
+// CHECK01: "GNU::Assemble", inputs: ["{{.*}}.s"], output: "{{.*}}.o"
 // CHECK01: "gcc::Link", inputs: ["{{.*}}.o"], output: "a.out"
 
 // Clang control options
index b9933d7fb376209d02b6e2952bc1a9e81defdab5..3bc413193f167705b7328113f195fad53bbc5e4f 100644 (file)
 // CHECK: "-Wall" "-Wdocumentation"
 // CHECK: "-o" "{{[^"]+}}.s"
 //
-// gcc-as
-// CHECK: gcc{{[^"]*}}"
-// CHECK-NOT: "-mlinker-version=10"
-// CHECK-NOT: "-Xclang"
-// CHECK-NOT: "foo-bar"
-// CHECK-NOT: "-Wall"
-// CHECK-NOT: "-Wdocumentation"
-// CHECK: -march
-// CHECK-NOT: "-mlinker-version=10"
-// CHECK-NOT: "-Xclang"
-// CHECK-NOT: "foo-bar"
-// CHECK-NOT: "-Wall"
-// CHECK-NOT: "-Wdocumentation"
+// gnu-as
+// CHECK: as{{[^"]*}}"
 // CHECK: "-o" "{{[^"]+}}.o"
 //
 // gcc-ld
index b400f990fb1b04911878128a3a355ea0e4e5cd11..a46ba16296a706aca8722b30980190f61a331b90 100644 (file)
@@ -4,12 +4,6 @@
 // Ensure we get a crazy triple here as we asked for one.
 // CHECK: Target: unknown-unknown-unknown
 //
-// Also, ensure we don't blindly hand our target selection logic down to GCC.
-// CHECK: "{{.*gcc(\.[Ee][Xx][Ee])?}}"
-// CHECK-NOT: "-target"
-// CHECK-NOT: "unknown-unknown-unknown"
-// CHECK: "-x" "assembler"
-//
 // Also check that the legacy spelling works.
 // RUN: %clang -no-canonical-prefixes -target unknown-unknown-unknown -c %s \
 // RUN:   -o %t.o -### 2>&1 | FileCheck %s
index dcd17d4f467ac22980c6e42c86dc62617f993a78..b03944c6a7bf46993c136381c1abf2e3eb30eee4 100644 (file)
@@ -1,32 +1,32 @@
 // RUN: %clang -target x86_64-unknown-unknown -c -x assembler %s -### 2>&1 \
 // RUN:   | FileCheck -check-prefix=X86_64 %s
-// X86_64: {{.*gcc.*-m64}}
+// X86_64: {{.*as.*--64}}
 
 // RUN: %clang -target x86_64-unknown-unknown -c -x assembler %s -### -m32 2>&1 \
 // RUN:   | FileCheck -check-prefix=X86_64-M32 %s
-// X86_64-M32: {{.*gcc.*-m32}}
+// X86_64-M32: {{.*as.*--32}}
 
 // RUN: %clang -target i386-unknown-unknown -c -x assembler %s -### 2>&1 \
 // RUN:   | FileCheck -check-prefix=I386 %s
-// I386: {{.*gcc.*-m32}}
+// I386: {{.*as.*--32}}
 
 // RUN: %clang -target i386-unknown-unknown -c -x assembler %s -### -m64 2>&1 \
 // RUN:   | FileCheck -check-prefix=I386-M64 %s
-// I386-M64: {{.*gcc.*-m64}}
+// I386-M64: {{.*as.*--64}}
 
 
 // RUN: %clang -target powerpc64-unknown-unknown -c -x assembler %s -### 2>&1 \
 // RUN:   | FileCheck -check-prefix=PPC64 %s
-// PPC64: {{.*gcc.*-m64}}
+// PPC64: {{.*as.*-a64}}
 
 // RUN: %clang -target powerpc64-unknown-unknown -c -x assembler %s -### -m32 2>&1 \
 // RUN:   | FileCheck -check-prefix=PPC64-M32 %s
-// PPC64-M32: {{.*gcc.*-m32}}
+// PPC64-M32: {{.*as.*-a32}}
 
 // RUN: %clang -target powerpc-unknown-unknown -c -x assembler %s -### 2>&1 \
 // RUN:   | FileCheck -check-prefix=PPC %s
-// PPC: {{.*gcc.*-m32}}
+// PPC: {{.*as.*-a32}}
 
 // RUN: %clang -target powerpc-unknown-unknown -c -x assembler %s -### -m64 2>&1 \
 // RUN:   | FileCheck -check-prefix=PPC-M64 %s
-// PPC-M64: {{.*gcc.*-m64}}
+// PPC-M64: {{.*as.*-a64}}