summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2013-06-19 15:09:06 +0000
committerReid Kleckner <reid@kleckner.net>2013-06-19 15:09:06 +0000
commit3793d5ed30613b97bf7735c21d84d440cbb00133 (patch)
tree96680c102296dec9b86aceb0ad3d64083c113bb3 /clang
parent4da7f88d2c549c91d07112735464d0d7c49edaa0 (diff)
downloadbcm5719-llvm-3793d5ed30613b97bf7735c21d84d440cbb00133.tar.gz
bcm5719-llvm-3793d5ed30613b97bf7735c21d84d440cbb00133.zip
[Driver] Don't forward source file input args to gcc
gcc's inputs are already added by the InputInfoList passed to Action::ConstructJob. Fixes a regression from r183989. This was manifesting when targetting mingw as an extra input argument to gcc when assembling. It presumably affects other situations where clang calls gcc. Prior to r183989, forwardToGCC() was returning false because the INPUT option defined in OptParser.td had the DriverOption flag set on it. LLVM's Option library does not set this flag for INPUT. Reviewers: espindola Differential Revision: http://llvm-reviews.chandlerc.com/D999 llvm-svn: 184308
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Driver/Tools.cpp5
-rw-r--r--clang/test/Driver/no-integrated-as-win.c10
2 files changed, 13 insertions, 2 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 7f22d6ff091..f88c2068408 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -225,7 +225,10 @@ static void addProfileRT(const ToolChain &TC, const ArgList &Args,
}
static bool forwardToGCC(const Option &O) {
- return !O.hasFlag(options::NoForward) &&
+ // Don't forward inputs from the original command line. They are added from
+ // InputInfoList.
+ return !O.getKind() == Option::InputClass &&
+ !O.hasFlag(options::NoForward) &&
!O.hasFlag(options::DriverOption) &&
!O.hasFlag(options::LinkerInput);
}
diff --git a/clang/test/Driver/no-integrated-as-win.c b/clang/test/Driver/no-integrated-as-win.c
index 0d6c2958e57..1ab2480c5d3 100644
--- a/clang/test/Driver/no-integrated-as-win.c
+++ b/clang/test/Driver/no-integrated-as-win.c
@@ -1,3 +1,11 @@
// RUN: %clang -target x86_64-pc-win32 -### -no-integrated-as %s -c 2>&1 | FileCheck %s
-
// CHECK: there is no external assembler we can use on windows
+
+// But there is for mingw. The source file should only be mentioned once for
+// the compile step.
+// RUN: %clang -target i686-pc-mingw32 -### -no-integrated-as %s -c 2>&1 | FileCheck -check-prefix=MINGW %s
+// MINGW: "-cc1"
+// MINGW: "-main-file-name" "no-integrated-as-win.c"
+// MINGW: "-x" "c" "{{.*}}no-integrated-as-win.c"
+// The assembler goes here, but its name depends on PATH.
+// MINGW-NOT: no-integrated-as-win.c
OpenPOWER on IntegriCloud