Package: gcc-3.0 Version: 3.0.2ds4-4 Severity: important Tags: patch The attached patch fixes a strength reduction ICE seen when compiling groff on hppa-linux. It was contributed by Alan Modra. I'm still in the process of verifying this with the gcc hppa maintainer (Dave Anglin) but wanted to send this to the bts first as a heads up.
randolph -- Debian Developer <[EMAIL PROTECTED]> http://www.TauSq.org/ #! /bin/sh -e # DP: Patch to fix strength-reduction optimization from Alan Modra dir= if [ $# -eq 3 -a "$2" = '-d' ]; then pdir="-d $3" dir="$3/" elif [ $# -ne 1 ]; then echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" exit 1 fi case "$1" in -patch) patch $pdir -f --no-backup-if-mismatch -p1 < $0 #cd ${dir}gcc && autoconf ;; -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 #rm ${dir}gcc/configure ;; *) echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" exit 1 esac exit 0 --- gcc/unroll.c.orig Wed Dec 5 08:54:17 2001 +++ gcc/unroll.c Wed Dec 5 08:55:54 2001 @@ -3508,13 +3508,16 @@ do { - if (GET_CODE (temp) == JUMP_INSN - /* Previous unrolling may have generated new insns not covered - by the uid_luid array. */ - && INSN_UID (JUMP_LABEL (temp)) < max_uid_for_loop + if (GET_CODE (temp) != JUMP_INSN) + continue; + if (/* It's an addr_diff_vec */ + JUMP_LABEL(temp) == 0 + || (/* Previous unrolling may have generated new insns not covered + by the uid_luid array. */ + INSN_UID (JUMP_LABEL (temp)) < max_uid_for_loop /* Check if we jump back into the loop body. */ && INSN_LUID (JUMP_LABEL (temp)) > INSN_LUID (loop->top) - && INSN_LUID (JUMP_LABEL (temp)) < INSN_LUID (loop->cont)) + && INSN_LUID (JUMP_LABEL (temp)) < INSN_LUID (loop->cont))) { if (loop_dump_stream) fprintf (loop_dump_stream,