r184308 - [Driver] Don't forward source file input args to gcc

Reid Kleckner reid at kleckner.net
Wed Jun 19 08:09:06 PDT 2013


Author: rnk
Date: Wed Jun 19 10:09:06 2013
New Revision: 184308

URL: http://llvm.org/viewvc/llvm-project?rev=184308&view=rev
Log:
[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

Modified:
    cfe/trunk/lib/Driver/Tools.cpp
    cfe/trunk/test/Driver/no-integrated-as-win.c

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=184308&r1=184307&r2=184308&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Wed Jun 19 10:09:06 2013
@@ -225,7 +225,10 @@ static void addProfileRT(const ToolChain
 }
 
 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);
 }

Modified: cfe/trunk/test/Driver/no-integrated-as-win.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/no-integrated-as-win.c?rev=184308&r1=184307&r2=184308&view=diff
==============================================================================
--- cfe/trunk/test/Driver/no-integrated-as-win.c (original)
+++ cfe/trunk/test/Driver/no-integrated-as-win.c Wed Jun 19 10:09:06 2013
@@ -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





More information about the cfe-commits mailing list