diff options
author | NAKAMURA Takumi <geek4civic@gmail.com> | 2013-08-19 11:51:51 +0000 |
---|---|---|
committer | NAKAMURA Takumi <geek4civic@gmail.com> | 2013-08-19 11:51:51 +0000 |
commit | 053704f959202ef9e349178cc434f419309f43b7 (patch) | |
tree | 1e18397dc49bb4c0e31fd8e184016574870cb29c | |
parent | bca169c185f220fd44049d8115ffc62160f49da6 (diff) | |
download | bcm5719-llvm-053704f959202ef9e349178cc434f419309f43b7.tar.gz bcm5719-llvm-053704f959202ef9e349178cc434f419309f43b7.zip |
clang/Driver: [PR12920] Don't forward any -W arguments to gcc-as and gcc-ld.
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?
llvm-svn: 188668
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 5 | ||||
-rw-r--r-- | clang/test/Driver/gcc_forward.c | 32 |
2 files changed, 34 insertions, 3 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index ad004ba1133..3257946d28d 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -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 diff --git a/clang/test/Driver/gcc_forward.c b/clang/test/Driver/gcc_forward.c index a3502b200fc..b9933d7fb37 100644 --- a/clang/test/Driver/gcc_forward.c +++ b/clang/test/Driver/gcc_forward.c @@ -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" |