aboutsummaryrefslogtreecommitdiff
path: root/gcc/c-pragma.c
diff options
context:
space:
mode:
authorSimon Baldwin <simonb@google.com>2008-07-28 11:55:11 +0000
committerSimon Baldwin <simonb@gcc.gnu.org>2008-07-28 11:55:11 +0000
commit0d48657d7378a4b1cb25ed181bca8020eae520f1 (patch)
tree33aa42b4f5b37d44f904ae5deec152d79f68e2e8 /gcc/c-pragma.c
parent17df49a3e95d79d33e62e33ef83159d1c7d4e4a1 (diff)
downloadgcc-0d48657d7378a4b1cb25ed181bca8020eae520f1.zip
gcc-0d48657d7378a4b1cb25ed181bca8020eae520f1.tar.gz
gcc-0d48657d7378a4b1cb25ed181bca8020eae520f1.tar.bz2
c-pragma.c (handle_pragma_message): New function.
* c-pragma.c (handle_pragma_message): New function. (init_pragma): Register handle_pragma_message. * doc/extend.texi (Diagnostic Pragmas): Added #pragma message documentation. * gcc.dg/pragma-message.c: New. From-SVN: r138206
Diffstat (limited to 'gcc/c-pragma.c')
-rw-r--r--gcc/c-pragma.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/gcc/c-pragma.c b/gcc/c-pragma.c
index 6e4043a..b2bbfae 100644
--- a/gcc/c-pragma.c
+++ b/gcc/c-pragma.c
@@ -1173,6 +1173,39 @@ handle_pragma_optimize(cpp_reader *ARG_UNUSED(dummy))
}
}
+/* Print a plain user-specified message. */
+
+static void
+handle_pragma_message (cpp_reader *ARG_UNUSED(dummy))
+{
+ enum cpp_ttype token;
+ tree x, message = 0;
+
+ token = pragma_lex (&x);
+ if (token == CPP_OPEN_PAREN)
+ {
+ token = pragma_lex (&x);
+ if (token == CPP_STRING)
+ message = x;
+ else
+ GCC_BAD ("expected a string after %<#pragma message%>");
+ if (pragma_lex (&x) != CPP_CLOSE_PAREN)
+ GCC_BAD ("malformed %<#pragma message%>, ignored");
+ }
+ else if (token == CPP_STRING)
+ message = x;
+ else
+ GCC_BAD ("expected a string after %<#pragma message%>");
+
+ gcc_assert (message);
+
+ if (pragma_lex (&x) != CPP_EOF)
+ warning (OPT_Wpragmas, "junk at end of %<#pragma message%>");
+
+ if (TREE_STRING_LENGTH (message) > 1)
+ inform ("#pragma message: %s", TREE_STRING_POINTER (message));
+}
+
/* A vector of registered pragma callbacks. */
DEF_VEC_O (pragma_handler);
@@ -1341,6 +1374,8 @@ init_pragma (void)
c_register_pragma_with_expansion (0, "redefine_extname", handle_pragma_redefine_extname);
c_register_pragma (0, "extern_prefix", handle_pragma_extern_prefix);
+ c_register_pragma_with_expansion (0, "message", handle_pragma_message);
+
#ifdef REGISTER_TARGET_PRAGMAS
REGISTER_TARGET_PRAGMAS ();
#endif