]> granicus.if.org Git - clang/commitdiff
basic support for -Wunknown-pragmas, more coming.
authorChris Lattner <sabre@nondot.org>
Sun, 19 Apr 2009 21:10:26 +0000 (21:10 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 19 Apr 2009 21:10:26 +0000 (21:10 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69547 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticLexKinds.td
lib/Lex/Pragma.cpp
test/Preprocessor/pragma_unknown.c

index e1e903fad06a96326b6411cfc8b482eb4bb5f4f0..ece9b69a408bff7d199fbd358d11e8283e57d546 100644 (file)
@@ -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<
index 6bef2c8f77ff70d896aa320de669b6771db9aad4..6cea5fbe7345b1d7cf94994f8ad872358aa2a61b 100644 (file)
@@ -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);
index e1b040b5cf0fe28850ee8e175fd60fe61d043b3e..32107591e0af3a962ecc3df9e5278543dd65f0bb 100644 (file)
@@ -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}}