summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfredette <fredette@NetBSD.org>2001-12-06 18:50:34 +0000
committerfredette <fredette@NetBSD.org>2001-12-06 18:50:34 +0000
commit3ec17be693a753bfbef072fa55a6d5cf88ddfe76 (patch)
tree576e3624f057d4df9ed6871707dcff4b0a9febf0
parent22fd9bbb5ff68b8c3cae3cab85ba6a10c20fc7fc (diff)
Applied a strength-reduction patch from gcc-current. The patch
is in their revision 1.186, from schwab@suse.de, and said: Don't call reg_used_between_p if the insn from BL2 is after the insn from BL. This fixes a cc1 SEGV on sys/dev/scsipi/ch.c rev 1.48 under -O2 or -Os, seen on m68k and vax.
-rw-r--r--gnu/dist/toolchain/gcc/loop.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/gnu/dist/toolchain/gcc/loop.c b/gnu/dist/toolchain/gcc/loop.c
index aca291dd6b1..74839a5666e 100644
--- a/gnu/dist/toolchain/gcc/loop.c
+++ b/gnu/dist/toolchain/gcc/loop.c
@@ -4103,11 +4103,11 @@ strength_reduce (scan_start, end, loop_top, insn_count,
in-between when biv_toal_increment returns nonzero both times
but we test it here in case some day some real cfg analysis
gets used to set always_computable. */
- && ((loop_insn_first_p (bl2->biv->insn, bl->biv->insn)
- && no_labels_between_p (bl2->biv->insn, bl->biv->insn))
- || (! reg_used_between_p (bl->biv->src_reg, bl->biv->insn,
- bl2->biv->insn)
- && no_jumps_between_p (bl->biv->insn, bl2->biv->insn)))
+ && (loop_insn_first_p (bl2->biv->insn, bl->biv->insn)
+ ? no_labels_between_p (bl2->biv->insn, bl->biv->insn)
+ : (! reg_used_between_p (bl->biv->src_reg, bl->biv->insn,
+ bl2->biv->insn)
+ && no_jumps_between_p (bl->biv->insn, bl2->biv->insn)))
&& validate_change (bl->biv->insn,
&SET_SRC (single_set (bl->biv->insn)),
copy_rtx (src), 0))