From 3c6c822327af1ed37de93cfd6cf8d85ae7709cac Mon Sep 17 00:00:00 2001 From: NAKAMURA Takumi Date: Mon, 19 Aug 2013 11:51:51 +0000 Subject: [PATCH] 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? git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188668 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Driver/Tools.cpp | 5 +++++ test/Driver/gcc_forward.c | 32 +++++++++++++++++++++++++++++--- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index ad004ba113..3257946d28 100644 --- a/lib/Driver/Tools.cpp +++ b/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(JA) || isa(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/test/Driver/gcc_forward.c b/test/Driver/gcc_forward.c index a3502b200f..b9933d7fb3 100644 --- a/test/Driver/gcc_forward.c +++ b/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" -- 2.40.0