]> granicus.if.org Git - clang/commitdiff
[Driver] Don't forward source file input args to gcc
authorReid Kleckner <reid@kleckner.net>
Wed, 19 Jun 2013 15:09:06 +0000 (15:09 +0000)
committerReid Kleckner <reid@kleckner.net>
Wed, 19 Jun 2013 15:09:06 +0000 (15:09 +0000)
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

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

lib/Driver/Tools.cpp
test/Driver/no-integrated-as-win.c

index 7f22d6ff091cebd10db3f339c6b59580d396305a..f88c20684083e0a80fd3cbc3e42c02b90f03c8b7 100644 (file)
@@ -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);
 }
index 0d6c2958e57af3c14097ecb98079bb81624f2600..1ab2480c5d3833f366e0641d4bb52278a837cc72 100644 (file)
@@ -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