From: Chris Lattner Date: Sun, 19 Apr 2009 21:10:26 +0000 (+0000) Subject: basic support for -Wunknown-pragmas, more coming. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=af7cdf45da4925f788e87a4c318ee67404646088;p=clang basic support for -Wunknown-pragmas, more coming. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69547 91177308-0d34-0410-b5e6-96231b3b80d8 --- 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, 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}}