diff options
Diffstat (limited to 'packages/gcc/gcc-3.3.3/arm-10730.dpatch')
-rw-r--r-- | packages/gcc/gcc-3.3.3/arm-10730.dpatch | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/packages/gcc/gcc-3.3.3/arm-10730.dpatch b/packages/gcc/gcc-3.3.3/arm-10730.dpatch index e69de29bb2..5938509cf9 100644 --- a/packages/gcc/gcc-3.3.3/arm-10730.dpatch +++ b/packages/gcc/gcc-3.3.3/arm-10730.dpatch @@ -0,0 +1,51 @@ +#! /bin/sh -e + +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 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +# DP: 2003-05-15 Philip Blundell <philb@gnu.org> +# DP: +# DP: PR target/10730 +# DP: * config/arm/arm.c (adjacent_mem_locations): Reject offsets +# DP: involving invalid constants. + +Index: arm.c +=================================================================== +RCS file: /cvs/gcc/gcc/gcc/config/arm/arm.c,v +retrieving revision 1.271 +diff -u -p -r1.271 arm.c +--- gcc/config/arm/arm.c 10 May 2003 13:10:46 -0000 1.271 ++++ gcc/config/arm/arm.c 14 May 2003 21:26:26 -0000 +@@ -4567,6 +4571,12 @@ adjacent_mem_locations (a, b) + else + reg1 = REGNO (XEXP (b, 0)); + ++ /* Don't accept any offset that will require multiple instructions to handle, ++ since this would cause the arith_adjacentmem pattern to output an overlong ++ sequence. */ ++ if (!const_ok_for_op (PLUS, val0) || !const_ok_for_op (PLUS, val1)) ++ return 0; ++ + return (reg0 == reg1) && ((val1 - val0) == 4 || (val0 - val1) == 4); + } + return 0; |