re PR tree-optimization/57349 (ICE on 253.perlbmk with pgo after r198096)

2013-05-22  Richard Biener  <rguenther@suse.de>

	PR middle-end/57349
	* profile.c (branch_prob): Do not split blocks that are
	abnormally receiving from ECF_RETURNS_TWICE functions.

From-SVN: r199193
This commit is contained in:
Richard Biener 2013-05-22 11:16:32 +00:00 committed by Richard Biener
parent bf7a73f980
commit bee0b10c53
2 changed files with 20 additions and 12 deletions

View File

@ -1,3 +1,9 @@
2013-05-22 Richard Biener <rguenther@suse.de>
PR middle-end/57349
* profile.c (branch_prob): Do not split blocks that are
abnormally receiving from ECF_RETURNS_TWICE functions.
2013-05-22 Richard Sandiford <rsandifo@linux.vnet.ibm.com>
* recog.c (offsettable_address_addr_space_p): Fix calculation of

View File

@ -1085,18 +1085,20 @@ branch_prob (void)
or __builtin_setjmp_dispatcher calls. These are very
special and don't expect anything to be inserted before
them. */
if (!is_gimple_call (first)
|| (fndecl = gimple_call_fndecl (first)) == NULL
|| DECL_BUILT_IN_CLASS (fndecl) != BUILT_IN_NORMAL
|| (DECL_FUNCTION_CODE (fndecl) != BUILT_IN_SETJMP_RECEIVER
&& (DECL_FUNCTION_CODE (fndecl)
!= BUILT_IN_SETJMP_DISPATCHER)))
{
if (dump_file)
fprintf (dump_file, "Splitting bb %i after labels\n",
bb->index);
split_block_after_labels (bb);
}
if (is_gimple_call (first)
&& (((fndecl = gimple_call_fndecl (first)) != NULL
&& DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_NORMAL
&& (DECL_FUNCTION_CODE (fndecl)
== BUILT_IN_SETJMP_RECEIVER
|| (DECL_FUNCTION_CODE (fndecl)
== BUILT_IN_SETJMP_DISPATCHER)))
|| gimple_call_flags (first) & ECF_RETURNS_TWICE))
continue;
if (dump_file)
fprintf (dump_file, "Splitting bb %i after labels\n",
bb->index);
split_block_after_labels (bb);
}
}
}