#! /bin/sh -e # DP: alpha fix from 20030918 if [ $# -eq 3 -a "$2" = '-d' ]; then pdir="-d $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;; -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p1 < $0;; *) echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" exit 1 esac exit 0 diff -urN gcc-0917/gcc/config/alpha/alpha.c gcc-0918/gcc/config/alpha/alpha.c --- gcc-0917/gcc/config/alpha/alpha.c Mon Mar 24 12:59:37 2003 +++ gcc-0918/gcc/config/alpha/alpha.c Wed Sep 17 14:27:34 2003 @@ -2949,12 +2949,8 @@ compiled at the end of compilation. In the meantime, someone can re-encode-section-info on some symbol changing it e.g. from global to local-not-small. If this happens, we'd have emitted a plain - load rather than a high+losum load and not recognize the insn. - - So if rtl inlining is in effect, we delay the global/not-global - decision until rest_of_compilation by wrapping it in an - UNSPEC_SYMBOL. */ - if (TARGET_EXPLICIT_RELOCS && flag_inline_functions + load rather than a high+losum load and not recognize the insn. */ + if (TARGET_EXPLICIT_RELOCS && rtx_equal_function_value_matters && global_symbolic_operand (operands[1], mode)) { diff -urN gcc-0917/gcc/config/alpha/alpha.md gcc-0918/gcc/config/alpha/alpha.md --- gcc-0917/gcc/config/alpha/alpha.md Tue Jun 24 13:49:25 2003 +++ gcc-0918/gcc/config/alpha/alpha.md Wed Sep 17 19:29:20 2003 @@ -5399,7 +5399,7 @@ [(set (match_operand:DI 0 "register_operand" "=r") (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")] UNSPEC_SYMBOL))] - "TARGET_EXPLICIT_RELOCS && flag_inline_functions" + "TARGET_EXPLICIT_RELOCS" "#" "" [(set (match_dup 0) (match_dup 1))]