aboutsummaryrefslogtreecommitdiff
path: root/gcc/bb-reorder.c
diff options
context:
space:
mode:
authorJ"orn Rennecke <joern.rennecke@st.com>2005-09-20 21:48:36 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>2005-09-20 22:48:36 +0100
commit070a7956aa83825d8cdcc0d1b73aa64a0383ce84 (patch)
treeb5aed08c2aba5538d50f0915cdd9050b95ec600d /gcc/bb-reorder.c
parent9972f30d1c2b29cdfc35421bbb5f4902ff0a1879 (diff)
downloadgcc-070a7956aa83825d8cdcc0d1b73aa64a0383ce84.zip
gcc-070a7956aa83825d8cdcc0d1b73aa64a0383ce84.tar.gz
gcc-070a7956aa83825d8cdcc0d1b73aa64a0383ce84.tar.bz2
re PR rtl-optimization/23898 (basic block reordering excessively increases code size; get_uncond_jump_length pessimistic)
PR rtl-optimization/23898 * output.h (get_attr_min_length): Declare. * final.c (get_attr_length_1): New function, broken out of: (get_attr_length). (get_attr_min_length): New function. * bb-reorder.c (copy_bb_p, get_uncond_jump_length): Use it. (duplicate_computed_gotos): Likewise. * genattr.c (insn_min_length): Generate declaration. * genattrtab.c (min_fn, min_attr_value): New functions. (make_length_attrs): Generate insn_min_length. From-SVN: r104468
Diffstat (limited to 'gcc/bb-reorder.c')
-rw-r--r--gcc/bb-reorder.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c
index c5de235..68d2cd8 100644
--- a/gcc/bb-reorder.c
+++ b/gcc/bb-reorder.c
@@ -1178,7 +1178,7 @@ copy_bb_p (basic_block bb, int code_may_grow)
FOR_BB_INSNS (bb, insn)
{
if (INSN_P (insn))
- size += get_attr_length (insn);
+ size += get_attr_min_length (insn);
}
if (size <= max_size)
@@ -1205,7 +1205,7 @@ get_uncond_jump_length (void)
label = emit_label_before (gen_label_rtx (), get_insns ());
jump = emit_jump_insn (gen_jump (label));
- length = get_attr_length (jump);
+ length = get_attr_min_length (jump);
delete_insn (jump);
delete_insn (label);
@@ -2030,7 +2030,7 @@ duplicate_computed_gotos (void)
FOR_BB_INSNS (bb, insn)
if (INSN_P (insn))
{
- size += get_attr_length (insn);
+ size += get_attr_min_length (insn);
if (size > max_size)
break;
}