[cfe-commits] r69547 - in /cfe/trunk: include/clang/Basic/DiagnosticLexKinds.td lib/Lex/Pragma.cpp test/Preprocessor/pragma_unknown.c

Chris Lattner sabre at nondot.org
Sun Apr 19 14:10:26 PDT 2009


Author: lattner
Date: Sun Apr 19 16:10:26 2009
New Revision: 69547

URL: http://llvm.org/viewvc/llvm-project?rev=69547&view=rev
Log:
basic support for -Wunknown-pragmas, more coming.

Modified:
    cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td
    cfe/trunk/lib/Lex/Pragma.cpp
    cfe/trunk/test/Preprocessor/pragma_unknown.c

Modified: cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td?rev=69547&r1=69546&r2=69547&view=diff

==============================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td Sun Apr 19 16:10:26 2009
@@ -204,6 +204,9 @@
   "_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<

Modified: cfe/trunk/lib/Lex/Pragma.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/Pragma.cpp?rev=69547&r1=69546&r2=69547&view=diff

==============================================================================
--- cfe/trunk/lib/Lex/Pragma.cpp (original)
+++ cfe/trunk/lib/Lex/Pragma.cpp Sun Apr 19 16:10:26 2009
@@ -70,7 +70,10 @@
   
   // 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);

Modified: cfe/trunk/test/Preprocessor/pragma_unknown.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/pragma_unknown.c?rev=69547&r1=69546&r2=69547&view=diff

==============================================================================
--- cfe/trunk/test/Preprocessor/pragma_unknown.c (original)
+++ cfe/trunk/test/Preprocessor/pragma_unknown.c Sun Apr 19 16:10:26 2009
@@ -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}}
 





More information about the cfe-commits mailing list