[Driver] Fix -Wp,-MMD pr13959
authorMichael J. Spencer <bigcheesegs@gmail.com>
Wed, 7 Nov 2012 23:37:14 +0000 (23:37 +0000)
committerMichael J. Spencer <bigcheesegs@gmail.com>
Wed, 7 Nov 2012 23:37:14 +0000 (23:37 +0000)
llvm-svn: 167559

clang/lib/Driver/Driver.cpp
clang/test/Driver/Wp-args.c

index d4b1bae..4fc6db9 100644 (file)
@@ -185,7 +185,6 @@ DerivedArgList *Driver::TranslateInputArgs(const InputArgList &Args) const {
     // some build systems. We don't try to be complete here because we don't
     // care to encourage this usage model.
     if (A->getOption().matches(options::OPT_Wp_COMMA) &&
-        A->getNumValues() == 2 &&
         (A->getValue(0) == StringRef("-MD") ||
          A->getValue(0) == StringRef("-MMD"))) {
       // Rewrite to -MD/-MMD along with -MF.
@@ -193,8 +192,9 @@ DerivedArgList *Driver::TranslateInputArgs(const InputArgList &Args) const {
         DAL->AddFlagArg(A, Opts->getOption(options::OPT_MD));
       else
         DAL->AddFlagArg(A, Opts->getOption(options::OPT_MMD));
-      DAL->AddSeparateArg(A, Opts->getOption(options::OPT_MF),
-                          A->getValue(1));
+      if (A->getNumValues() == 2)
+        DAL->AddSeparateArg(A, Opts->getOption(options::OPT_MF),
+                            A->getValue(1));
       continue;
     }
 
index 0ab85b4..1d1af24 100644 (file)
 // CHECK: "-MT"
 //
 // PR4062
+
+// RUN: %clang --target i386-pc-linux-gnu -### \
+// RUN:   -Wp,-MMD -fsyntax-only %s 2> %t
+// RUN: FileCheck -check-prefix MMD < %t %s
+
+// MMD: "-cc1"
+// MMD-NOT: -MMD
+// MMD: "-dependency-file" "Wp-args.d"