patches/gcc/3.4.6/160-arm-ldm-peephole2.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Jan 06 22:22:02 2009 +0000 (2009-01-06)
changeset 1130 78681fe5cdd1
parent 746 b150d6f590fc
permissions -rw-r--r--
Update all samples to the latest set of config options.
There might be some small issues here and there due to the split of CT_ExtractAndPatch.

/trunk/samples/x86_64-unknown-linux-gnu/crosstool.config | 14 11 3 0 ++++++++++---
/trunk/samples/sh4-unknown-linux-gnu/crosstool.config | 13 10 3 0 +++++++++---
/trunk/samples/armeb-unknown-linux-uclibc/crosstool.config | 10 7 3 0 ++++++---
/trunk/samples/arm-unknown-elf/crosstool.config | 8 4 4 0 +++---
/trunk/samples/arm-unknown-linux-gnueabi/crosstool.config | 14 11 3 0 ++++++++++---
/trunk/samples/armeb-unknown-eabi/crosstool.config | 8 4 4 0 +++---
/trunk/samples/ia64-unknown-linux-gnu/crosstool.config | 13 10 3 0 +++++++++---
/trunk/samples/x86_64-unknown-linux-uclibc/crosstool.config | 11 8 3 0 +++++++---
/trunk/samples/armeb-unknown-linux-gnueabi/crosstool.config | 14 11 3 0 ++++++++++---
/trunk/samples/powerpc-e500v2-linux-gnuspe/crosstool.config | 11 8 3 0 +++++++---
/trunk/samples/i686-nptl-linux-gnu/crosstool.config | 14 11 3 0 ++++++++++---
/trunk/samples/powerpc-unknown-linux-gnu/crosstool.config | 14 11 3 0 ++++++++++---
/trunk/samples/arm-unknown-linux-gnu/crosstool.config | 14 11 3 0 ++++++++++---
/trunk/samples/mips-unknown-linux-uclibc/crosstool.config | 10 7 3 0 ++++++---
/trunk/samples/arm-unknown-linux-uclibcgnueabi/crosstool.config | 11 8 3 0 +++++++---
/trunk/samples/arm-iphone-linux-gnueabi/crosstool.config | 5 2 3 0 ++---
/trunk/samples/armeb-unknown-linux-gnu/crosstool.config | 14 11 3 0 ++++++++++---
/trunk/samples/powerpc-unknown_nofpu-linux-gnu/crosstool.config | 14 11 3 0 ++++++++++---
/trunk/samples/powerpc-unknown-linux-uclibc/crosstool.config | 10 7 3 0 ++++++---
/trunk/samples/arm-unknown-linux-uclibc/crosstool.config | 11 8 3 0 +++++++---
/trunk/samples/i586-geode-linux-uclibc/crosstool.config | 11 8 3 0 +++++++---
/trunk/samples/powerpc-405-linux-gnu/crosstool.config | 14 11 3 0 ++++++++++---
/trunk/samples/mips-unknown-elf/crosstool.config | 8 4 4 0 +++---
/trunk/samples/armeb-unknown-linux-uclibcgnueabi/crosstool.config | 11 8 3 0 +++++++---
/trunk/samples/mipsel-unknown-linux-gnu/crosstool.config | 13 10 3 0 +++++++++---
/trunk/samples/arm-unknown-eabi/crosstool.config | 8 4 4 0 +++---
/trunk/samples/alphaev56-unknown-linux-gnu/crosstool.config | 14 11 3 0 ++++++++++---
/trunk/samples/powerpc-860-linux-gnu/crosstool.config | 13 10 3 0 +++++++++---
28 files changed, 237 insertions(+), 88 deletions(-)
     1 diff -durN gcc-3.4.6.orig/gcc/config/arm/arm.c gcc-3.4.6/gcc/config/arm/arm.c
     2 --- gcc-3.4.6.orig/gcc/config/arm/arm.c	2007-08-15 22:57:51.000000000 +0200
     3 +++ gcc-3.4.6/gcc/config/arm/arm.c	2007-08-15 22:57:51.000000000 +0200
     4 @@ -4572,6 +4572,10 @@
     5  int
     6  adjacent_mem_locations (rtx a, rtx b)
     7  {
     8 +  /* We don't guarantee to preserve the order of these memory refs.  */
     9 +  if (volatile_refs_p (a) || volatile_refs_p (b))
    10 +    return 0;
    11 +
    12    if ((GET_CODE (XEXP (a, 0)) == REG
    13         || (GET_CODE (XEXP (a, 0)) == PLUS
    14  	   && GET_CODE (XEXP (XEXP (a, 0), 1)) == CONST_INT))
    15 @@ -4611,6 +4615,17 @@
    16  	return 0;
    17  
    18        val_diff = val1 - val0;
    19 +
    20 +      if (arm_ld_sched)
    21 +	{
    22 +	  /* If the target has load delay slots, then there's no benefit
    23 +	     to using an ldm instruction unless the offset is zero and
    24 +	     we are optimizing for size.  */
    25 +	  return (optimize_size && (REGNO (reg0) == REGNO (reg1))
    26 +		  && (val0 == 0 || val1 == 0 || val0 == 4 || val1 == 4)
    27 +		  && (val_diff == 4 || val_diff == -4));
    28 +	}
    29 +
    30        return ((REGNO (reg0) == REGNO (reg1))
    31  	      && (val_diff == 4 || val_diff == -4));
    32      }