patches/gcc/3.3.6/120-arm-pr22528.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Fri Sep 04 17:27:16 2009 +0200 (2009-09-04)
changeset 1512 439a6b292917
parent 402 197e1b49586e
permissions -rw-r--r--
TODO: update

Add TODO list for m4, autoconf, automake and libtool.
Building our own versions would remove burden from the users
who have older versions on their distributions, and are not
ready/able/allowed to upgrade.
     1 From http://gcc.gnu.org/ml/gcc-patches/2003-11/msg00832.html, by
     2 Richard Earnshaw.  Fixes http://gcc.gnu.org/PR22528
     3 
     4 --- gcc-3.3.4/gcc/config/arm/arm.md.orig	2004-03-30 22:43:44.000000000 +0200
     5 +++ gcc-3.3.4/gcc/config/arm/arm.md	2005-08-15 12:21:55.000000000 +0200
     6 @@ -4275,7 +4275,7 @@
     7     (set (match_dup 2)
     8  	(ashiftrt:SI (match_operand 0 "" "") (const_int 8)))
     9     ;; store the high byte
    10 -   (set (match_dup 4) (subreg:QI (match_dup 2) 0))]	;explicit subreg safe
    11 +   (set (match_dup 4) (match_dup 5))]
    12    "TARGET_ARM"
    13    "
    14    {
    15 @@ -4291,7 +4291,8 @@
    16      operands[1] = adjust_address (operands[1], QImode, 0);
    17      operands[3] = gen_lowpart (QImode, operands[0]);
    18      operands[0] = gen_lowpart (SImode, operands[0]);
    19 -    operands[2] = gen_reg_rtx (SImode); 
    20 +    operands[2] = gen_reg_rtx (SImode);
    21 +    operands[5] = gen_lowpart (QImode, operands[2]);
    22    }"
    23  )
    24  
    25 @@ -4299,7 +4300,7 @@
    26    [(set (match_dup 4) (match_dup 3))
    27     (set (match_dup 2)
    28  	(ashiftrt:SI (match_operand 0 "" "") (const_int 8)))
    29 -   (set (match_operand 1 "" "")	(subreg:QI (match_dup 2) 3))]
    30 +   (set (match_operand 1 "" "")	(match_dup 5))]
    31    "TARGET_ARM"
    32    "
    33    {
    34 @@ -4316,13 +4317,14 @@
    35      operands[3] = gen_lowpart (QImode, operands[0]);
    36      operands[0] = gen_lowpart (SImode, operands[0]);
    37      operands[2] = gen_reg_rtx (SImode);
    38 +    operands[5] = gen_lowpart (QImode, operands[2]);
    39    }"
    40  )
    41  
    42  ;; Subroutine to store a half word integer constant into memory.
    43  (define_expand "storeinthi"
    44    [(set (match_operand 0 "" "")
    45 -	(subreg:QI (match_operand 1 "" "") 0))
    46 +	(match_operand 1 "" ""))
    47     (set (match_dup 3) (match_dup 2))]
    48    "TARGET_ARM"
    49    "
    50 @@ -4363,6 +4365,7 @@
    51      operands[3] = adjust_address (op0, QImode, 1);
    52      operands[0] = adjust_address (operands[0], QImode, 0);
    53      operands[2] = gen_lowpart (QImode, operands[2]);
    54 +    operands[1] = gen_lowpart (QImode, operands[1]);
    55    }"
    56  )
    57  
    58 @@ -4682,11 +4685,12 @@
    59     (set (match_dup 3)
    60  	(ashiftrt:SI (match_dup 2) (const_int 16)))
    61     (set (match_operand:HI 0 "s_register_operand" "")
    62 -	(subreg:HI (match_dup 3) 0))]
    63 +	(match_dup 4))]
    64    "TARGET_ARM"
    65    "
    66    operands[2] = gen_reg_rtx (SImode);
    67    operands[3] = gen_reg_rtx (SImode);
    68 +  operands[4] = gen_lowpart (HImode, operands[3]);
    69    "
    70  )
    71