]> granicus.if.org Git - clang/commitdiff
Improve driver error message when only running the preprocessor and an input is
authorDaniel Dunbar <daniel@zuster.org>
Thu, 17 Sep 2009 04:13:26 +0000 (04:13 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Thu, 17 Sep 2009 04:13:26 +0000 (04:13 +0000)
already preprocessed.

--
ddunbar@giles:tmp$ touch t.i
ddunbar@giles:tmp$ gcc -E t.i
ddunbar@giles:tmp$ clang -E t.i
clang: warning: t.i: previously preprocessed input unused when '-E' is present
ddunbar@giles:tmp$
--

<rdar://problem/6813375> [driver] driver prints confusing message when running -E on preprocessed file

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

include/clang/Basic/DiagnosticDriverKinds.td
lib/Driver/Driver.cpp

index fc31d4902ab3794cb39da4f721cdb43ebb224867..dfdf0ff2e733dcc1b8207e239af0ba67fd6ca54e 100644 (file)
@@ -58,6 +58,8 @@ def err_drv_invalid_mfloat_abi : Error<
 
 def warn_drv_input_file_unused : Warning<
   "%0: '%1' input unused when '%2' is present">;
+def warn_drv_preprocessed_input_file_unused : Warning<
+  "%0: previously preprocessed input unused when '%1' is present">;
 def warn_drv_unused_argument : Warning<
   "argument unused during compilation: '%0'">;
 def warn_drv_pipe_ignored_with_save_temps : Warning<
index 6fb7c98e5e73eb5cb52baabeee7431ae6c669b3e..1d72b0dbd6e895ab5272dae6c40a6f1f205c0f8a 100644 (file)
@@ -803,10 +803,19 @@ void Driver::BuildActions(const ArgList &Args, ActionList &Actions) const {
     if (InitialPhase > FinalPhase) {
       // Claim here to avoid the more general unused warning.
       InputArg->claim();
-      Diag(clang::diag::warn_drv_input_file_unused)
-        << InputArg->getAsString(Args)
-        << getPhaseName(InitialPhase)
-        << FinalPhaseArg->getOption().getName();
+
+      // Special case '-E' warning on a previously preprocessed file to make
+      // more sense.
+      if (InitialPhase == phases::Compile && FinalPhase == phases::Preprocess &&
+          getPreprocessedType(InputType) == types::TY_INVALID)
+        Diag(clang::diag::warn_drv_preprocessed_input_file_unused)
+          << InputArg->getAsString(Args)
+          << FinalPhaseArg->getOption().getName();
+      else
+        Diag(clang::diag::warn_drv_input_file_unused)
+          << InputArg->getAsString(Args)
+          << getPhaseName(InitialPhase)
+          << FinalPhaseArg->getOption().getName();
       continue;
     }