From ffaf4d3b138deea3fd676c5c9f7d124be4b12bfb Mon Sep 17 00:00:00 2001 From: Roger Sayle Date: Mon, 21 Mar 2005 22:11:11 +0000 Subject: [PATCH] re PR middle-end/20557 (FAIL: gcc.dg/pr18628.c) PR middle-end/20557 * bb-reorder.c (duplicate_computed_gotos): Use can_duplicate_block_p to determine whether a block can be duplicated, rather than test whether the block contains noncopyable insns ourselves. From-SVN: r96836 --- gcc/ChangeLog | 7 +++++++ gcc/bb-reorder.c | 25 ++++++++----------------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0e9becd8de2d..c0b07e314b02 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2005-03-21 Roger Sayle + + PR middle-end/20557 + * bb-reorder.c (duplicate_computed_gotos): Use can_duplicate_block_p + to determine whether a block can be duplicated, rather than test + whether the block contains noncopyable insns ourselves. + 2005-03-21 Kazu Hirata * config/i860/i860.h (PREDICATE_CODES): Remove nonexistent diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c index a94c9e4e4688..b7223d7d1aa7 100644 --- a/gcc/bb-reorder.c +++ b/gcc/bb-reorder.c @@ -2047,24 +2047,15 @@ duplicate_computed_gotos (void) int size = 0; FOR_BB_INSNS (bb, insn) - { - if (INSN_P (insn)) - { - /* If the insn isn't copyable, don't duplicate - the block. */ - if (targetm.cannot_copy_insn_p - && targetm.cannot_copy_insn_p (insn)) - { - size = max_size + 1; - break; - } - size += get_attr_length (insn); - } - if (size > max_size) - break; - } + if (INSN_P (insn)) + { + size += get_attr_length (insn); + if (size > max_size) + break; + } - if (size <= max_size) + if (size <= max_size + && can_duplicate_block_p (bb)) bitmap_set_bit (candidates, bb->index); } }