]> granicus.if.org Git - clang/commitdiff
Disallow FIX-ITs when generating code.
authorDaniel Dunbar <daniel@zuster.org>
Thu, 12 Nov 2009 15:42:53 +0000 (15:42 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Thu, 12 Nov 2009 15:42:53 +0000 (15:42 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86990 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticFrontendKinds.td
tools/clang-cc/clang-cc.cpp

index a3d7906255861a74afae93fe3d9d8ce65fee021d..130628b5d4db2e52f36407242e9de71d59dff637 100644 (file)
@@ -18,10 +18,14 @@ def err_fe_error_reading_stdin : Error<"error reading stdin">;
 def err_fe_error_backend : Error<"error in backend: %0">, DefaultFatal;
 def err_fe_invalid_ast_file : Error<"invalid AST file: '%0'">, DefaultFatal;
 def err_fe_invalid_ast_action : Error<"invalid action for AST input">, DefaultFatal;
-def err_fe_invalid_code_complete_file 
+def err_fe_invalid_code_complete_file
   : Error<"cannot locate code-completion file %0">, DefaultFatal;
 def err_fe_dependency_file_requires_MT : Error<
     "-dependency-file requires at least one -MT option">;
+def err_fe_incompatible_options : Error<
+    "'%0' cannot be used with '%1'">, DefaultFatal;
+def err_fe_no_fixit_and_codegen : Error<
+    "FIX-ITs cannot be applied when generating code">;
 
 def note_fixit_applied : Note<"FIX-IT applied suggested code changes">;
 def note_fixit_in_macro : Note<
index fdac9b950137e124011b115bbe2cb796c8646568..e78cc9387a357d2cf6fc51a68d41f39d4508ac01 100644 (file)
@@ -558,6 +558,12 @@ static ASTConsumer *CreateConsumerAction(const CompilerInvocation &CompOpts,
       OS.reset(ComputeOutFile(CompOpts, InFile, "bc", true, OutPath));
     }
 
+    // Fix-its can change semantics, disallow with any IRgen action.
+    if (FixItAll || !FixItAtLocations.empty()) {
+      PP.getDiagnostics().Report(diag::err_fe_no_fixit_and_codegen);
+      return 0;
+    }
+
     return CreateBackendConsumer(Act, PP.getDiagnostics(), PP.getLangOptions(),
                                  CompOpts.getCompileOpts(), InFile, OS.get(),
                                  Context);