aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-04-19 21:10:26 +0000
committerChris Lattner <sabre@nondot.org>2009-04-19 21:10:26 +0000
commitaf7cdf45da4925f788e87a4c318ee67404646088 (patch)
tree13f0428c3e9d7a6d462508663e16e64fefa46945
parent49138fc59eeac2aacd3b7e04c2642180d5baefd7 (diff)
basic support for -Wunknown-pragmas, more coming.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69547 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/clang/Basic/DiagnosticLexKinds.td3
-rw-r--r--lib/Lex/Pragma.cpp5
-rw-r--r--test/Preprocessor/pragma_unknown.c5
3 files changed, 10 insertions, 3 deletions
diff --git a/include/clang/Basic/DiagnosticLexKinds.td b/include/clang/Basic/DiagnosticLexKinds.td
index e1e903fad0..ece9b69a40 100644
--- a/include/clang/Basic/DiagnosticLexKinds.td
+++ b/include/clang/Basic/DiagnosticLexKinds.td
@@ -204,6 +204,9 @@ def err__Pragma_malformed : Error<
"_Pragma takes a parenthesized string literal">;
def err_pragma_comment_malformed : Error<
"pragma comment requires parenthesized identifier and optional string">;
+def warn_pragma_ignored : Warning<"unknown pragma ignored">,
+ InGroup<UnknownPragmas>, DefaultIgnore;
+
def err_pragma_comment_unknown_kind : Error<"unknown kind of pragma comment">;
def err_defined_macro_name : Error<"'defined' cannot be used as a macro name">;
def err_paste_at_start : Error<
diff --git a/lib/Lex/Pragma.cpp b/lib/Lex/Pragma.cpp
index 6bef2c8f77..6cea5fbe73 100644
--- a/lib/Lex/Pragma.cpp
+++ b/lib/Lex/Pragma.cpp
@@ -70,7 +70,10 @@ void PragmaNamespace::HandlePragma(Preprocessor &PP, Token &Tok) {
// Get the handler for this token. If there is no handler, ignore the pragma.
PragmaHandler *Handler = FindHandler(Tok.getIdentifierInfo(), false);
- if (Handler == 0) return;
+ if (Handler == 0) {
+ PP.Diag(Tok, diag::warn_pragma_ignored);
+ return;
+ }
// Otherwise, pass it down.
Handler->HandlePragma(PP, Tok);
diff --git a/test/Preprocessor/pragma_unknown.c b/test/Preprocessor/pragma_unknown.c
index e1b040b5cf..32107591e0 100644
--- a/test/Preprocessor/pragma_unknown.c
+++ b/test/Preprocessor/pragma_unknown.c
@@ -1,6 +1,7 @@
-// RUN: clang-cc -E %s | grep '#pragma foo bar'
+// RUN: clang-cc -E %s | grep '#pragma foo bar' &&
+// RUN: clang-cc -fsyntax-only -Wunknown-pragmas %s
// GCC doesn't expand macro args for unrecognized pragmas.
#define bar xX
-#pragma foo bar
+#pragma foo bar // expected-warning {{unknown pragma ignored}}