aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael J. Spencer <bigcheesegs@gmail.com>2012-11-07 23:37:14 +0000
committerMichael J. Spencer <bigcheesegs@gmail.com>2012-11-07 23:37:14 +0000
commitda05df7ac964abcd18956ffaf6d66ff13a203a11 (patch)
tree845215bc245a165ccb605f840406814e62802077
parent7b89ab735e6fdfeadd8679cb3cae5cbec3870335 (diff)
[Driver] Fix -Wp,-MMD pr13959
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167559 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Driver/Driver.cpp6
-rw-r--r--test/Driver/Wp-args.c8
2 files changed, 11 insertions, 3 deletions
diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp
index d4b1bae6dd..4fc6db980c 100644
--- a/lib/Driver/Driver.cpp
+++ b/lib/Driver/Driver.cpp
@@ -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;
}
diff --git a/test/Driver/Wp-args.c b/test/Driver/Wp-args.c
index 0ab85b4c9c..1d1af24804 100644
--- a/test/Driver/Wp-args.c
+++ b/test/Driver/Wp-args.c
@@ -11,3 +11,11 @@
// 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"