aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa-pure-const.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2010-06-11 12:29:53 +0000
committerJan Hubicka <jh@suse.cz>2010-06-11 12:29:53 +0000
commit57a76f69028863421515cee78f35b7468fb7b64c (patch)
treeb9d5e6003412755a9b91c08dbafc60f251457051 /gcc/ipa-pure-const.c
parent85b410fd1094a74d228833f5df3846d4823c9b59 (diff)
* doc/invoke.texi (Wsuggest-attribute): Document.
(Wmissing-noreturn): Remove. * ipa-pure-const.c (warn_function_noreturn): New function. * opts.c (decode_options): Set warn_suggest_attribute_noreturn on warn_missing_noreturn. * common.opt (Wsuggest-attribute=noreturn): New. * tree-flow.h (warn_function_noreturn): Declare. * tree-cfg.c (execute_warn_function_noreturn): Use warn_function_noreturn. (gate_warn_function_noreturn): New. (pass_warn_function_noreturn): Update. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@160606 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ipa-pure-const.c')
-rw-r--r--gcc/ipa-pure-const.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c
index 766c8fc6456..da8d442107b 100644
--- a/gcc/ipa-pure-const.c
+++ b/gcc/ipa-pure-const.c
@@ -177,6 +177,16 @@ warn_function_const (tree decl, bool known_finite)
= suggest_attribute (OPT_Wsuggest_attribute_const, decl,
known_finite, warned_about, "const");
}
+
+void
+warn_function_noreturn (tree decl)
+{
+ static struct pointer_set_t *warned_about;
+ if (!lang_hooks.missing_noreturn_ok_p (decl))
+ warned_about
+ = suggest_attribute (OPT_Wsuggest_attribute_noreturn, decl,
+ true, warned_about, "noreturn");
+}
/* Init the function state. */
static void
@@ -1514,11 +1524,7 @@ local_pure_const (void)
if (!skip && !TREE_THIS_VOLATILE (current_function_decl)
&& EDGE_COUNT (EXIT_BLOCK_PTR->preds) == 0)
{
- if (warn_missing_noreturn
- && !lang_hooks.missing_noreturn_ok_p (cfun->decl))
- warning_at (DECL_SOURCE_LOCATION (cfun->decl), OPT_Wmissing_noreturn,
- "function might be possible candidate "
- "for attribute %<noreturn%>");
+ warn_function_noreturn (cfun->decl);
if (dump_file)
fprintf (dump_file, "Function found to be noreturn: %s\n",
lang_hooks.decl_printable_name (current_function_decl, 2));