]> granicus.if.org Git - clang/commitdiff
clang/Driver: [PR12920] Don't forward any -W arguments to gcc-as and gcc-ld.
authorNAKAMURA Takumi <geek4civic@gmail.com>
Mon, 19 Aug 2013 11:51:51 +0000 (11:51 +0000)
committerNAKAMURA Takumi <geek4civic@gmail.com>
Mon, 19 Aug 2013 11:51:51 +0000 (11:51 +0000)
AFAIK, there are no -W options for gcc-as and gcc-ld.
It caused failure to build clang with gcc-4.7 on cygwin.

FIXME: Could we recategorize Options for gcc-as and gcc-ld?

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

lib/Driver/Tools.cpp
test/Driver/gcc_forward.c

index ad004ba1133c143e0f8e3b1c513c9d50b8c4c0fd..3257946d28d5db77fc0a94aa21cfab808896e89f 100644 (file)
@@ -3906,6 +3906,11 @@ void gcc::Common::ConstructJob(Compilation &C, const JobAction &JA,
           A->getOption().matches(options::OPT_g_Group))
         continue;
 
+      // Don't forward any -W arguments to assembly and link steps.
+      if ((isa<AssembleJobAction>(JA) || isa<LinkJobAction>(JA)) &&
+          A->getOption().matches(options::OPT_W_Group))
+        continue;
+
       // It is unfortunate that we have to claim here, as this means
       // we will basically never report anything interesting for
       // platforms using a generic gcc, even if we are just using gcc
index a3502b200fc0374b53c07fbe46fb46dee3bd6793..b9933d7fb376209d02b6e2952bc1a9e81defdab5 100644 (file)
@@ -1,18 +1,44 @@
 // Check that we don't try to forward -Xclang or -mlinker-version to GCC.
+// PR12920 -- Check also we may not forward W_Group options to GCC.
 //
 // RUN: %clang -target powerpc-unknown-unknown \
-// RUN:   -c %s \
+// RUN:   %s \
+// RUN:   -Wall -Wdocumentation \
 // RUN:   -Xclang foo-bar \
 // RUN:   -march=x86_64 \
 // RUN:   -mlinker-version=10 -### 2> %t
 // RUN: FileCheck < %t %s
 //
-// CHECK: gcc{{.*}}"
+// clang-cc1
+// 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"
+// CHECK: "-o" "{{[^"]+}}.o"
+//
+// gcc-ld
+// 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: gcc_forward
+// CHECK-NOT: "-Wall"
+// CHECK-NOT: "-Wdocumentation"
+// CHECK: "-o" "a.out"