Commit 73add7fe by Jan Hubicka Committed by Jan Hubicka

ipa-pure-const.c (local_pure_const): Do NORETURN discovery.

	* ipa-pure-const.c (local_pure_const): Do NORETURN discovery.

	* testsuite/gcc.dg/noreturn-8.c: New testcase.

From-SVN: r160124
parent a669ca47
2010-06-01 Jan Hubicka <jh@suse.cz>
* ipa-pure-const.c (local_pure_const): Do NORETURN discovery.
2010-06-01 Jan Hubicka <jh@suse.cz>
* tree-cfgcleanup.c (fixup_noreturn_call): Break out from ...;
remove return value.
(split_bbs_on_noreturn_calls) .... here.
......
......@@ -1362,6 +1362,27 @@ local_pure_const (void)
&& !warn_suggest_attribute_pure
&& skip)
return 0;
/* First do NORETURN discovery. */
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%>");
if (dump_file)
fprintf (dump_file, "Function found to be noreturn: %s\n",
lang_hooks.decl_printable_name (current_function_decl, 2));
/* Update declaration and reduce profile to executed once. */
TREE_THIS_VOLATILE (current_function_decl) = 1;
if (node->frequency > NODE_FREQUENCY_EXECUTED_ONCE)
node->frequency = NODE_FREQUENCY_EXECUTED_ONCE;
changed = true;
}
l = analyze_function (node, false);
switch (l->pure_const_state)
......
2010-05-31 Jan Hubicka <jh@suse.cz>
* testsuite/gcc.dg/noreturn-8.c: New testcase.
2010-05-31 Jan Hubicka <jh@suse.cz>
* testsuite/gcc.dg/lto/noreturn-1_1.c: Remove dg-do annotations.
* testsuite/gcc.dg/lto/noreturn-1_0.c: Move it here.
......
/* { dg-do run } */
/* { dg-options "-O2" } */
void exit (int);
void noreturn_autodetection_failed ();
__attribute__ ((noinline))
detect_noreturn ()
{
exit (0);
}
int
main (void)
{
detect_noreturn ();
noreturn_autodetection_failed ();
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment