diff options
author | Simon Baldwin <simonb@google.com> | 2008-07-28 11:55:11 +0000 |
---|---|---|
committer | Simon Baldwin <simonb@gcc.gnu.org> | 2008-07-28 11:55:11 +0000 |
commit | 0d48657d7378a4b1cb25ed181bca8020eae520f1 (patch) | |
tree | 33aa42b4f5b37d44f904ae5deec152d79f68e2e8 /gcc/c-pragma.c | |
parent | 17df49a3e95d79d33e62e33ef83159d1c7d4e4a1 (diff) | |
download | gcc-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.c | 35 |
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 |