From: Richard Biener Date: Wed, 22 May 2013 11:16:32 +0000 (+0000) Subject: re PR tree-optimization/57349 (ICE on 253.perlbmk with pgo after r198096) X-Git-Tag: releases/gcc-4.9.0~5766 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bee0b10c535d7a4d6fd3221062b07ace1d6b1e98;p=thirdparty%2Fgcc.git re PR tree-optimization/57349 (ICE on 253.perlbmk with pgo after r198096) 2013-05-22 Richard Biener PR middle-end/57349 * profile.c (branch_prob): Do not split blocks that are abnormally receiving from ECF_RETURNS_TWICE functions. From-SVN: r199193 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 16cd2d97a3a8..ffb3c6734b25 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-05-22 Richard Biener + + 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 * recog.c (offsettable_address_addr_space_p): Fix calculation of diff --git a/gcc/profile.c b/gcc/profile.c index 6f05581711c9..b8333987e02a 100644 --- a/gcc/profile.c +++ b/gcc/profile.c @@ -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); } } }