#! /bin/sh -e # DP: Proposed patch for PR target/34571 (alpha) 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 -p0 < $0 ;; -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 ;; *) echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" exit 1 esac exit 0 2007-12-26 Rask Ingemann Lambertsen PR target/34571 * config/alpha/alpha.c (alpha_cannot_force_const_mem): Use symbolic_operand. * varasm.c (output_constant_pool_1): Fix typo. Index: gcc/config/alpha/alpha.c =================================================================== --- gcc/config/alpha/alpha.c (revision 131132) +++ gcc/config/alpha/alpha.c (working copy) @@ -1112,10 +1112,9 @@ alpha_legitimize_address (rtx x, rtx scr static bool alpha_cannot_force_const_mem (rtx x) { - enum rtx_code code = GET_CODE (x); - return code == SYMBOL_REF || code == LABEL_REF || code == CONST; + return symbolic_operand (x, GET_MODE (x)); } /* We do not allow indirect calls to be optimized into sibling calls, nor can we allow a call to a function with a different GP to be optimized Index: gcc/varasm.c =================================================================== --- gcc/varasm.c (revision 131132) +++ gcc/varasm.c (working copy) @@ -3709,9 +3709,9 @@ output_constant_pool_1 (struct constant_ tmp = XEXP (XEXP (x, 0), 0); /* FALLTHRU */ case LABEL_REF: - tmp = XEXP (x, 0); + tmp = XEXP (tmp, 0); gcc_assert (!INSN_DELETED_P (tmp)); gcc_assert (!NOTE_P (tmp) || NOTE_KIND (tmp) != NOTE_INSN_DELETED); break;