[cfe-dev] -Wfatal-errors
Christian Adåker
cadaker at gmail.com
Wed Dec 23 01:00:00 PST 2009
On Wed, Dec 23, 2009 at 12:13 AM, Chris Lattner <clattner at apple.com> wrote:
> A nice cleanup in that code would be to switch it to produce diagnostics for
> the error cases instead of using printf, would you be interested in tackling
> that too?
Sure. I also took the liberty of updating a few comments and the TODO.
//Christian
-------------- next part --------------
Index: TODO.txt
===================================================================
--- TODO.txt (revision 91988)
+++ TODO.txt (working copy)
@@ -69,7 +69,6 @@
//===---------------------------------------------------------------------===//
Options to support:
- -Wfatal-errors
-ftabstop=width
-fpreprocessed mode.
-nostdinc++
Index: include/clang/Basic/DiagnosticFrontendKinds.td
===================================================================
--- include/clang/Basic/DiagnosticFrontendKinds.td (revision 91988)
+++ include/clang/Basic/DiagnosticFrontendKinds.td (working copy)
@@ -219,4 +219,7 @@
def warn_unknown_warning_option : Warning<
"unknown warning option '%0'">,
InGroup<DiagGroup<"unknown-warning-option"> >;
+def warn_unknown_warning_specifier : Warning<
+ "unknown %0 warning specifier: '%1'">,
+ InGroup<DiagGroup<"unknown-warning-option"> >;
}
Index: lib/Frontend/Warnings.cpp
===================================================================
--- lib/Frontend/Warnings.cpp (revision 91988)
+++ lib/Frontend/Warnings.cpp (working copy)
@@ -13,12 +13,12 @@
//
// This file is responsible for handling all warning options. This includes
// a number of -Wfoo options and their variants, which are driven by TableGen-
-// generated data, and the special cases -pedantic, -pedantic-errors, -w and
-// -Werror.
+// generated data, and the special cases -pedantic, -pedantic-errors, -w,
+// -Werror and -Wfatal-errors.
//
// Each warning option controls any number of actual warnings.
// Given a warning option 'foo', the following are valid:
-// -Wfoo, -Wno-foo, -Werror=foo
+// -Wfoo, -Wno-foo, -Werror=foo, -Wfatal-errors=foo
//
#include "clang/Frontend/Utils.h"
#include "clang/Basic/Diagnostic.h"
@@ -26,7 +26,6 @@
#include "clang/Lex/LexDiagnostic.h"
#include "clang/Frontend/DiagnosticOptions.h"
#include "clang/Frontend/FrontendDiagnostic.h"
-#include <cstdio>
#include <cstring>
#include <utility>
#include <algorithm>
@@ -79,8 +78,8 @@
if (OptEnd-OptStart != 5) { // Specifier must be present.
if ((OptStart[5] != '=' && OptStart[5] != '-') ||
OptEnd-OptStart == 6) {
- fprintf(stderr, "warning: unknown -Werror warning specifier: -W%s\n",
- Opt.c_str());
+ Diags.Report(diag::warn_unknown_warning_specifier)
+ << "-Werror" << ("-W" + Opt);
continue;
}
Specifier = OptStart+6;
@@ -102,9 +101,8 @@
if (OptEnd-OptStart != 12) {
if ((OptStart[12] != '=' && OptStart[12] != '-') ||
OptEnd-OptStart == 13) {
- fprintf(stderr,
- "warning: unknown -Wfatal-errors warning specifier: -W%s\n",
- Opt.c_str());
+ Diags.Report(diag::warn_unknown_warning_specifier)
+ << "-Wfatal-errors" << ("-W" + Opt);
continue;
}
Specifier = OptStart + 13;
More information about the cfe-dev
mailing list