From 7ea6b6cf97363a0f4dfb1a72a7cda31c59350bbc Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Fri, 11 Jun 2010 14:29:53 +0200 Subject: invoke.texi (Wsuggest-attribute): Document. * 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. From-SVN: r160606 --- gcc/ipa-pure-const.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'gcc/ipa-pure-const.c') diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c index 766c8fc..da8d442 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 %"); + 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)); -- cgit v1.1