aboutsummaryrefslogtreecommitdiff
path: root/gcc/bb-reorder.c
diff options
context:
space:
mode:
authorRoger Sayle <roger@eyesopen.com>2005-03-21 22:11:11 +0000
committerRoger Sayle <sayle@gcc.gnu.org>2005-03-21 22:11:11 +0000
commitffaf4d3b138deea3fd676c5c9f7d124be4b12bfb (patch)
tree28720a371b03ceef348c0a3e1f86dde7d551ed90 /gcc/bb-reorder.c
parent59298b1d60ada7c7e44d7d29cab5c2da8d066614 (diff)
downloadgcc-ffaf4d3b138deea3fd676c5c9f7d124be4b12bfb.zip
gcc-ffaf4d3b138deea3fd676c5c9f7d124be4b12bfb.tar.gz
gcc-ffaf4d3b138deea3fd676c5c9f7d124be4b12bfb.tar.bz2
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
Diffstat (limited to 'gcc/bb-reorder.c')
-rw-r--r--gcc/bb-reorder.c25
1 files changed, 8 insertions, 17 deletions
diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c
index a94c9e4..b7223d7 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);
}
}