diff options
| -rw-r--r-- | clang/Driver/clang.cpp | 14 | ||||
| -rw-r--r-- | clang/include/clang/Basic/Diagnostic.h | 3 | ||||
| -rw-r--r-- | clang/include/clang/Basic/DiagnosticDriverKinds.td | 8 | ||||
| -rw-r--r-- | clang/include/clang/Basic/DiagnosticFrontendKinds.def | 20 | ||||
| -rw-r--r-- | clang/include/clang/Basic/DiagnosticFrontendKinds.td | 15 | ||||
| -rw-r--r-- | clang/include/clang/Frontend/FrontendDiagnostic.h | 27 | ||||
| -rw-r--r-- | clang/lib/Basic/Diagnostic.cpp | 16 | ||||
| -rw-r--r-- | clang/test/Analysis/CGColorSpace.c | 4 |
8 files changed, 92 insertions, 15 deletions
diff --git a/clang/Driver/clang.cpp b/clang/Driver/clang.cpp index c4145c01a7a..a0195c629a7 100644 --- a/clang/Driver/clang.cpp +++ b/clang/Driver/clang.cpp @@ -25,8 +25,9 @@ #include "clang.h" #include "ASTConsumers.h" #include "clang/Frontend/CompileOptions.h" -#include "clang/Frontend/PathDiagnosticClients.h" +#include "clang/Frontend/FrontendDiagnostic.h" #include "clang/Frontend/InitHeaderSearch.h" +#include "clang/Frontend/PathDiagnosticClients.h" #include "clang/Frontend/TextDiagnosticBuffer.h" #include "clang/Frontend/TextDiagnosticPrinter.h" #include "clang/Analysis/PathDiagnostic.h" @@ -857,14 +858,16 @@ static bool InitializePreprocessor(Preprocessor &PP, const FileEntry *File = FileMgr.getFile(InFile); if (File) SourceMgr.createMainFileID(File, SourceLocation()); if (SourceMgr.getMainFileID().isInvalid()) { - fprintf(stderr, "Error reading '%s'!\n",InFile.c_str()); + PP.getDiagnostics().Report(FullSourceLoc(), diag::err_fe_error_reading) + << InFile.c_str(); return true; } } else { llvm::MemoryBuffer *SB = llvm::MemoryBuffer::getSTDIN(); if (SB) SourceMgr.createMainFileIDForMemBuffer(SB); if (SourceMgr.getMainFileID().isInvalid()) { - fprintf(stderr, "Error reading standard input! Empty?\n"); + PP.getDiagnostics().Report(FullSourceLoc(), + diag::err_fe_error_reading_stdin); return true; } } @@ -1525,9 +1528,8 @@ int main(int argc, char **argv) { llvm::OwningPtr<TargetInfo> Target(TargetInfo::CreateTargetInfo(Triple)); if (Target == 0) { - fprintf(stderr, "Sorry, I don't know what target this is: %s\n", - Triple.c_str()); - fprintf(stderr, "Please use -triple or -arch.\n"); + Diags.Report(FullSourceLoc(), diag::err_fe_unknown_triple) + << Triple.c_str(); return 1; } diff --git a/clang/include/clang/Basic/Diagnostic.h b/clang/include/clang/Basic/Diagnostic.h index f504cad29fe..bcec5d9334b 100644 --- a/clang/include/clang/Basic/Diagnostic.h +++ b/clang/include/clang/Basic/Diagnostic.h @@ -33,7 +33,8 @@ namespace clang { // Start position for diagnostics. enum { DIAG_START_DRIVER = 300, - DIAG_START_LEX = DIAG_START_DRIVER + 100, + DIAG_START_FRONTEND = DIAG_START_DRIVER + 100, + DIAG_START_LEX = DIAG_START_FRONTEND + 100, DIAG_START_PARSE = DIAG_START_LEX + 300, DIAG_START_AST = DIAG_START_PARSE + 300, DIAG_START_SEMA = DIAG_START_AST + 100, diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td b/clang/include/clang/Basic/DiagnosticDriverKinds.td index f84c79772d2..6301b6fb32f 100644 --- a/clang/include/clang/Basic/DiagnosticDriverKinds.td +++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td @@ -9,10 +9,10 @@ let Component = "Driver" in { -def driver_no_such_file : Error<"no such file or directory: '%0'"> -def driver_unsupported_opt : Error<"unsupported option '%0'"> -def driver_unknown_stdin_type : Error< +def err_drv_no_such_file : Error<"no such file or directory: '%0'"> +def err_drv_unsupported_opt : Error<"unsupported option '%0'"> +def err_drv_unknown_stdin_type : Error< "-E or -x required when input is from standard input"> -def driver_unknown_language : Error<"language not recognized: '%0'"> +def err_drv_unknown_language : Error<"language not recognized: '%0'"> } diff --git a/clang/include/clang/Basic/DiagnosticFrontendKinds.def b/clang/include/clang/Basic/DiagnosticFrontendKinds.def new file mode 100644 index 00000000000..42080fe2d09 --- /dev/null +++ b/clang/include/clang/Basic/DiagnosticFrontendKinds.def @@ -0,0 +1,20 @@ +//==--- DiagnosticFrontendKinds.def - frontend diagnostics ------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifdef FRONTENDSTART +__FRONTENDSTART = DIAG_START_FRONTEND, +#undef FRONTENDSTART +#endif + +DIAG(err_fe_unknown_triple, ERROR, + "unknown target triple '%0', please use -triple or -arch") +DIAG(err_fe_error_reading, ERROR, + "error reading '%0'") +DIAG(err_fe_error_reading_stdin, ERROR, + "error reading stdin") diff --git a/clang/include/clang/Basic/DiagnosticFrontendKinds.td b/clang/include/clang/Basic/DiagnosticFrontendKinds.td new file mode 100644 index 00000000000..2ab57397878 --- /dev/null +++ b/clang/include/clang/Basic/DiagnosticFrontendKinds.td @@ -0,0 +1,15 @@ +//==--- DiagnosticFrontendKinds.td - frontend diagnostics -----------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +let Component = "Frontend" in { + +def err_fe_error_reading, Error< "error reading '%0'"> +def err_fe_error_reading_stdin : Error<"error reading stdin"> + +} diff --git a/clang/include/clang/Frontend/FrontendDiagnostic.h b/clang/include/clang/Frontend/FrontendDiagnostic.h new file mode 100644 index 00000000000..7c875985034 --- /dev/null +++ b/clang/include/clang/Frontend/FrontendDiagnostic.h @@ -0,0 +1,27 @@ +//===--- DiagnosticFrontend.h - Diagnostics for frontend --------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_FRONTENDDIAGNOSTIC_H +#define LLVM_CLANG_FRONTENDDIAGNOSTIC_H + +#include "clang/Basic/Diagnostic.h" + +namespace clang { + namespace diag { + enum { +#define DIAG(ENUM,FLAGS,DESC) ENUM, +#define FRONTENDSTART +#include "clang/Basic/DiagnosticFrontendKinds.def" +#undef DIAG + NUM_BUILTIN_FRONTEND_DIAGNOSTICS + }; + } // end namespace diag +} // end namespace clang + +#endif diff --git a/clang/lib/Basic/Diagnostic.cpp b/clang/lib/Basic/Diagnostic.cpp index 3e3802ae20a..890b0c2ca5b 100644 --- a/clang/lib/Basic/Diagnostic.cpp +++ b/clang/lib/Basic/Diagnostic.cpp @@ -48,6 +48,10 @@ static unsigned char DiagnosticFlagsDriver[] = { #include "clang/Basic/DiagnosticDriverKinds.def" 0 }; +static unsigned char DiagnosticFlagsFrontend[] = { +#include "clang/Basic/DiagnosticFrontendKinds.def" + 0 +}; static unsigned char DiagnosticFlagsLex[] = { #include "clang/Basic/DiagnosticLexKinds.def" 0 @@ -78,8 +82,10 @@ static unsigned getBuiltinDiagClass(unsigned DiagID) { unsigned res; if (DiagID < diag::DIAG_START_DRIVER) res = DiagnosticFlagsCommon[DiagID]; - else if (DiagID < diag::DIAG_START_LEX) + else if (DiagID < diag::DIAG_START_FRONTEND) res = DiagnosticFlagsDriver[DiagID - diag::DIAG_START_DRIVER - 1]; + else if (DiagID < diag::DIAG_START_LEX) + res = DiagnosticFlagsFrontend[DiagID - diag::DIAG_START_FRONTEND - 1]; else if (DiagID < diag::DIAG_START_PARSE) res = DiagnosticFlagsLex[DiagID - diag::DIAG_START_LEX - 1]; else if (DiagID < diag::DIAG_START_AST) @@ -104,6 +110,10 @@ static const char * const DiagnosticTextDriver[] = { #include "clang/Basic/DiagnosticDriverKinds.def" 0 }; +static const char * const DiagnosticTextFrontend[] = { +#include "clang/Basic/DiagnosticFrontendKinds.def" + 0 +}; static const char * const DiagnosticTextLex[] = { #include "clang/Basic/DiagnosticLexKinds.def" 0 @@ -249,8 +259,10 @@ bool Diagnostic::isBuiltinNote(unsigned DiagID) { const char *Diagnostic::getDescription(unsigned DiagID) const { if (DiagID < diag::DIAG_START_DRIVER) return DiagnosticTextCommon[DiagID]; - else if (DiagID < diag::DIAG_START_LEX) + else if (DiagID < diag::DIAG_START_FRONTEND) return DiagnosticTextDriver[DiagID - diag::DIAG_START_DRIVER - 1]; + else if (DiagID < diag::DIAG_START_LEX) + return DiagnosticTextFrontend[DiagID - diag::DIAG_START_FRONTEND - 1]; else if (DiagID < diag::DIAG_START_PARSE) return DiagnosticTextLex[DiagID - diag::DIAG_START_LEX - 1]; else if (DiagID < diag::DIAG_START_AST) diff --git a/clang/test/Analysis/CGColorSpace.c b/clang/test/Analysis/CGColorSpace.c index eecd1d5b3cf..c405a10e369 100644 --- a/clang/test/Analysis/CGColorSpace.c +++ b/clang/test/Analysis/CGColorSpace.c @@ -1,5 +1,5 @@ -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range verify %s && +// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -verify %s && +// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -verify %s && // RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify %s && // RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify %s |

