]> granicus.if.org Git - clang/commitdiff
Driver: M and MM should be grouped together, <rdar://problem/8744831>.
authorDaniel Dunbar <daniel@zuster.org>
Wed, 8 Dec 2010 21:33:40 +0000 (21:33 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Wed, 8 Dec 2010 21:33:40 +0000 (21:33 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121284 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/Driver.cpp
lib/Driver/Tools.cpp
test/Driver/m_and_mm.c [new file with mode: 0644]

index 98c1a21559ffa0d2c64da013f2718862f49384b8..a3b7167c8b08684a86779f80096e3336140ae244 100644 (file)
@@ -800,8 +800,7 @@ void Driver::BuildActions(const ToolChain &TC, const ArgList &Args,
 
   // -{E,M,MM} only run the preprocessor.
   if ((FinalPhaseArg = Args.getLastArg(options::OPT_E)) ||
-      (FinalPhaseArg = Args.getLastArg(options::OPT_M)) ||
-      (FinalPhaseArg = Args.getLastArg(options::OPT_MM))) {
+      (FinalPhaseArg = Args.getLastArg(options::OPT_M, options::OPT_MM))) {
     FinalPhase = phases::Preprocess;
 
     // -{fsyntax-only,-analyze,emit-ast,S} only run up to the compiler.
@@ -909,7 +908,7 @@ Action *Driver::ConstructPhaseAction(const ArgList &Args, phases::ID Phase,
   case phases::Preprocess: {
     types::ID OutputTy;
     // -{M, MM} alter the output type.
-    if (Args.hasArg(options::OPT_M) || Args.hasArg(options::OPT_MM)) {
+    if (Args.hasArg(options::OPT_Moptions::OPT_MM)) {
       OutputTy = types::TY_Dependencies;
     } else {
       OutputTy = types::getPreprocessedType(Input->getType());
index e4f807e59ecdb1ee0b86a3623b29ef7ec4d16869..7674fdcf38fa11281ef26dfa3774193ee929a1ce 100644 (file)
@@ -136,8 +136,7 @@ void Clang::AddPreprocessingOptions(const Driver &D,
   Args.AddLastArg(CmdArgs, options::OPT_CC);
 
   // Handle dependency file generation.
-  if ((A = Args.getLastArg(options::OPT_M)) ||
-      (A = Args.getLastArg(options::OPT_MM)) ||
+  if ((A = Args.getLastArg(options::OPT_M, options::OPT_MM)) ||
       (A = Args.getLastArg(options::OPT_MD)) ||
       (A = Args.getLastArg(options::OPT_MMD))) {
     // Determine the output location.
diff --git a/test/Driver/m_and_mm.c b/test/Driver/m_and_mm.c
new file mode 100644 (file)
index 0000000..eab2a04
--- /dev/null
@@ -0,0 +1,3 @@
+// RUN: %clang -### \
+// RUN:   -M -MM %s 2> %t
+// RUN: grep '"-sys-header-deps"' %t | count 0