diff options
| author | Chris Lattner <sabre@nondot.org> | 2010-04-07 20:37:06 +0000 | 
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2010-04-07 20:37:06 +0000 | 
| commit | dec49e77e569035a0e76cb9fca6cd2e1c0e06c17 (patch) | |
| tree | bec3d2530bf1a3569e07c09a84d48efe133fc3fb /clang/lib | |
| parent | fd27fed58462229be261321c377146c045ad66ab (diff) | |
| download | bcm5719-llvm-dec49e77e569035a0e76cb9fca6cd2e1c0e06c17.tar.gz bcm5719-llvm-dec49e77e569035a0e76cb9fca6cd2e1c0e06c17.zip  | |
add clang -cc1 level support for "-ferror-limit 42"
llvm-svn: 100687
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/Basic/Diagnostic.cpp | 4 | ||||
| -rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 5 | ||||
| -rw-r--r-- | clang/lib/Frontend/Warnings.cpp | 4 | 
3 files changed, 11 insertions, 2 deletions
diff --git a/clang/lib/Basic/Diagnostic.cpp b/clang/lib/Basic/Diagnostic.cpp index 388875cf631..738c27ccae7 100644 --- a/clang/lib/Basic/Diagnostic.cpp +++ b/clang/lib/Basic/Diagnostic.cpp @@ -223,7 +223,7 @@ Diagnostic::Diagnostic(DiagnosticClient *client) : Client(client) {    ErrorOccurred = false;    FatalErrorOccurred = false; -  MaxErrorsEmitted = 0; +  ErrorLimit = 0;    NumWarnings = 0;    NumErrors = 0; @@ -555,7 +555,7 @@ bool Diagnostic::ProcessDiag() {      // If we've emitted a lot of errors, emit a fatal error after it to stop a      // flood of bogus errors. -    if (MaxErrorsEmitted && NumErrors >= MaxErrorsEmitted && +    if (ErrorLimit && NumErrors >= ErrorLimit &&          DiagLevel == Diagnostic::Error)        SetDelayedDiagnostic(diag::fatal_too_many_errors);    } diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index dc2c6bf3614..b9afcb5cfa6 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -232,6 +232,10 @@ static void DiagnosticOptsToArgs(const DiagnosticOptions &Opts,      Res.push_back("-fdiagnostics-binary");    if (Opts.ShowOptionNames)      Res.push_back("-fdiagnostics-show-option"); +  if (Opts.ErrorLimit) { +    Res.push_back("-ferror-limit"); +    Res.push_back(llvm::utostr(Opts.ErrorLimit)); +  }    if (Opts.TabStop != DiagnosticOptions::DefaultTabStop) {      Res.push_back("-ftabstop");      Res.push_back(llvm::utostr(Opts.TabStop)); @@ -830,6 +834,7 @@ static void ParseDiagnosticArgs(DiagnosticOptions &Opts, ArgList &Args,    Opts.ShowSourceRanges = Args.hasArg(OPT_fdiagnostics_print_source_range_info);    Opts.VerifyDiagnostics = Args.hasArg(OPT_verify);    Opts.BinaryOutput = Args.hasArg(OPT_fdiagnostics_binary); +  Opts.ErrorLimit = getLastArgIntValue(Args, OPT_ferror_limit, 0, Diags);    Opts.TabStop = getLastArgIntValue(Args, OPT_ftabstop,                                      DiagnosticOptions::DefaultTabStop, Diags);    if (Opts.TabStop == 0 || Opts.TabStop > DiagnosticOptions::MaxTabStop) { diff --git a/clang/lib/Frontend/Warnings.cpp b/clang/lib/Frontend/Warnings.cpp index ea9635e7984..39cda8783b4 100644 --- a/clang/lib/Frontend/Warnings.cpp +++ b/clang/lib/Frontend/Warnings.cpp @@ -35,6 +35,10 @@ void clang::ProcessWarningOptions(Diagnostic &Diags,                                    const DiagnosticOptions &Opts) {    Diags.setSuppressSystemWarnings(true);  // Default to -Wno-system-headers    Diags.setIgnoreAllWarnings(Opts.IgnoreWarnings); +   +  // Handle -ferror-limit +  if (Opts.ErrorLimit) +    Diags.setErrorLimit(Opts.ErrorLimit);    // If -pedantic or -pedantic-errors was specified, then we want to map all    // extension diagnostics onto WARNING or ERROR unless the user has futz'd  | 

