summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-10-29 21:05:18 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-10-29 21:05:18 +0000
commit7ad807f248ae2e806b8715a7e6c72e923ac7094c (patch)
tree8baac1b65053421512239df05e9189fc119a4f33
parentfa50290b49d24ef58fcf3e49381cc18e49c5c339 (diff)
downloadbcm5719-llvm-7ad807f248ae2e806b8715a7e6c72e923ac7094c.tar.gz
bcm5719-llvm-7ad807f248ae2e806b8715a7e6c72e923ac7094c.zip
Move some clang-cc errors to use diagnostics, and simplify.
llvm-svn: 85527
-rw-r--r--clang/include/clang/Basic/DiagnosticFrontendKinds.td3
-rw-r--r--clang/tools/clang-cc/clang-cc.cpp41
2 files changed, 18 insertions, 26 deletions
diff --git a/clang/include/clang/Basic/DiagnosticFrontendKinds.td b/clang/include/clang/Basic/DiagnosticFrontendKinds.td
index e5c73270fdf..ae8b9239444 100644
--- a/clang/include/clang/Basic/DiagnosticFrontendKinds.td
+++ b/clang/include/clang/Basic/DiagnosticFrontendKinds.td
@@ -12,6 +12,7 @@ let Component = "Frontend" in {
def err_fe_unknown_triple : Error<
"unknown target triple '%0', please use -triple or -arch">;
def err_fe_unknown_target_abi : Error<"unknown target ABI '%0'">;
+def err_fe_error_opening : Error<"error opening '%0': %1">;
def err_fe_error_reading : Error<"error reading '%0'">;
def err_fe_error_reading_stdin : Error<"error reading stdin">;
def err_fe_error_backend : Error<"error in backend: %0">, DefaultFatal;
@@ -19,6 +20,8 @@ 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
: 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 note_fixit_applied : Note<"FIX-IT applied suggested code changes">;
def note_fixit_in_macro : Note<
diff --git a/clang/tools/clang-cc/clang-cc.cpp b/clang/tools/clang-cc/clang-cc.cpp
index 0dc95a4555e..2d05859ebca 100644
--- a/clang/tools/clang-cc/clang-cc.cpp
+++ b/clang/tools/clang-cc/clang-cc.cpp
@@ -106,8 +106,6 @@ static bool ResolveParsedLocation(ParsedSourceLocation &ParsedLoc,
/// anything.
llvm::Timer *ClangFrontendTimer = 0;
-static bool HadErrors = false;
-
static llvm::cl::opt<bool>
Verbose("v", llvm::cl::desc("Enable verbose output"));
static llvm::cl::opt<bool>
@@ -1853,8 +1851,8 @@ static void ProcessInputFile(Preprocessor &PP, PreprocessorFactory &PPF,
Features, Context));
if (!Consumer.get()) {
- fprintf(stderr, "Unexpected program action!\n");
- HadErrors = true;
+ PP.getDiagnostics().Report(FullSourceLoc(),
+ diag::err_fe_invalid_ast_action);
return;
}
@@ -2165,11 +2163,9 @@ static void ProcessInputFile(Preprocessor &PP, PreprocessorFactory &PPF,
// handles. Also, we don't want to try to erase an open file.
OS.reset();
- if ((HadErrors || (PP.getDiagnostics().getNumErrors() != 0)) &&
- !OutPath.isEmpty()) {
- // If we had errors, try to erase the output file.
+ // If we had errors, try to erase the output file.
+ if (PP.getDiagnostics().getNumErrors() && !OutPath.isEmpty())
OutPath.eraseFromDisk();
- }
}
/// ProcessInputFile - Process a single AST input file with the specified state.
@@ -2224,11 +2220,9 @@ static void ProcessASTInputFile(const std::string &InFile, ProgActions PA,
// handles. Also, we don't want to try to erase an open file.
OS.reset();
- if ((HadErrors || (PP.getDiagnostics().getNumErrors() != 0)) &&
- !OutPath.isEmpty()) {
- // If we had errors, try to erase the output file.
+ // If we had errors, try to erase the output file.
+ if (PP.getDiagnostics().getNumErrors() && !OutPath.isEmpty())
OutPath.eraseFromDisk();
- }
}
static llvm::cl::list<std::string>
@@ -2290,9 +2284,9 @@ int main(int argc, char **argv) {
if (MessageLength.getNumOccurrences() == 0)
MessageLength.setValue(llvm::sys::Process::StandardErrColumns());
- if (!NoColorDiagnostic) {
- NoColorDiagnostic.setValue(!llvm::sys::Process::StandardErrHasColors());
- }
+ // Disable color diagnostics if not supported on stderr.
+ if (!NoColorDiagnostic && !llvm::sys::Process::StandardErrHasColors())
+ NoColorDiagnostic.setValue(true);
DiagClient.reset(new TextDiagnosticPrinter(llvm::errs(),
!NoShowColumn,
@@ -2397,26 +2391,21 @@ int main(int argc, char **argv) {
*SourceMgr.get(), HeaderInfo);
llvm::OwningPtr<Preprocessor> PP(PPFactory.CreatePreprocessor());
-
if (!PP)
continue;
- // Handle generating dependencies, if requested
+ // Handle generating dependencies, if requested.
if (!DependencyFile.empty()) {
- llvm::raw_ostream *DependencyOS;
if (DependencyTargets.empty()) {
- // FIXME: Use a proper diagnostic
- llvm::errs() << "-dependency-file requires at least one -MT option\n";
- HadErrors = true;
+ Diags.Report(FullSourceLoc(), diag::err_fe_dependency_file_requires_MT);
continue;
}
std::string ErrStr;
- DependencyOS =
+ llvm::raw_ostream *DependencyOS =
new llvm::raw_fd_ostream(DependencyFile.c_str(), ErrStr);
if (!ErrStr.empty()) {
- // FIXME: Use a proper diagnostic
- llvm::errs() << "unable to open dependency file: " + ErrStr;
- HadErrors = true;
+ Diags.Report(FullSourceLoc(), diag::err_fe_error_opening)
+ << DependencyFile << ErrStr;
continue;
}
@@ -2465,5 +2454,5 @@ int main(int argc, char **argv) {
// -time-passes usable.
llvm::llvm_shutdown();
- return HadErrors || (Diags.getNumErrors() != 0);
+ return (Diags.getNumErrors() != 0);
}
OpenPOWER on IntegriCloud