summaryrefslogtreecommitdiff
path: root/packages/gcc/gcc-3.3.3/arm-10730.dpatch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/gcc/gcc-3.3.3/arm-10730.dpatch')
-rw-r--r--packages/gcc/gcc-3.3.3/arm-10730.dpatch51
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;