patches/gcc/3.3.6/gcc-3.3.4-arm-pr22528.patch
changeset 402 197e1b49586e
parent 401 5baf14e56890
child 403 5c2145db8f0f
     1.1 --- a/patches/gcc/3.3.6/gcc-3.3.4-arm-pr22528.patch	Sat Sep 22 17:25:42 2007 +0000
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,71 +0,0 @@
     1.4 -From http://gcc.gnu.org/ml/gcc-patches/2003-11/msg00832.html, by
     1.5 -Richard Earnshaw.  Fixes http://gcc.gnu.org/PR22528
     1.6 -
     1.7 ---- gcc-3.3.4/gcc/config/arm/arm.md.orig	2004-03-30 22:43:44.000000000 +0200
     1.8 -+++ gcc-3.3.4/gcc/config/arm/arm.md	2005-08-15 12:21:55.000000000 +0200
     1.9 -@@ -4275,7 +4275,7 @@
    1.10 -    (set (match_dup 2)
    1.11 - 	(ashiftrt:SI (match_operand 0 "" "") (const_int 8)))
    1.12 -    ;; store the high byte
    1.13 --   (set (match_dup 4) (subreg:QI (match_dup 2) 0))]	;explicit subreg safe
    1.14 -+   (set (match_dup 4) (match_dup 5))]
    1.15 -   "TARGET_ARM"
    1.16 -   "
    1.17 -   {
    1.18 -@@ -4291,7 +4291,8 @@
    1.19 -     operands[1] = adjust_address (operands[1], QImode, 0);
    1.20 -     operands[3] = gen_lowpart (QImode, operands[0]);
    1.21 -     operands[0] = gen_lowpart (SImode, operands[0]);
    1.22 --    operands[2] = gen_reg_rtx (SImode); 
    1.23 -+    operands[2] = gen_reg_rtx (SImode);
    1.24 -+    operands[5] = gen_lowpart (QImode, operands[2]);
    1.25 -   }"
    1.26 - )
    1.27 - 
    1.28 -@@ -4299,7 +4300,7 @@
    1.29 -   [(set (match_dup 4) (match_dup 3))
    1.30 -    (set (match_dup 2)
    1.31 - 	(ashiftrt:SI (match_operand 0 "" "") (const_int 8)))
    1.32 --   (set (match_operand 1 "" "")	(subreg:QI (match_dup 2) 3))]
    1.33 -+   (set (match_operand 1 "" "")	(match_dup 5))]
    1.34 -   "TARGET_ARM"
    1.35 -   "
    1.36 -   {
    1.37 -@@ -4316,13 +4317,14 @@
    1.38 -     operands[3] = gen_lowpart (QImode, operands[0]);
    1.39 -     operands[0] = gen_lowpart (SImode, operands[0]);
    1.40 -     operands[2] = gen_reg_rtx (SImode);
    1.41 -+    operands[5] = gen_lowpart (QImode, operands[2]);
    1.42 -   }"
    1.43 - )
    1.44 - 
    1.45 - ;; Subroutine to store a half word integer constant into memory.
    1.46 - (define_expand "storeinthi"
    1.47 -   [(set (match_operand 0 "" "")
    1.48 --	(subreg:QI (match_operand 1 "" "") 0))
    1.49 -+	(match_operand 1 "" ""))
    1.50 -    (set (match_dup 3) (match_dup 2))]
    1.51 -   "TARGET_ARM"
    1.52 -   "
    1.53 -@@ -4363,6 +4365,7 @@
    1.54 -     operands[3] = adjust_address (op0, QImode, 1);
    1.55 -     operands[0] = adjust_address (operands[0], QImode, 0);
    1.56 -     operands[2] = gen_lowpart (QImode, operands[2]);
    1.57 -+    operands[1] = gen_lowpart (QImode, operands[1]);
    1.58 -   }"
    1.59 - )
    1.60 - 
    1.61 -@@ -4682,11 +4685,12 @@
    1.62 -    (set (match_dup 3)
    1.63 - 	(ashiftrt:SI (match_dup 2) (const_int 16)))
    1.64 -    (set (match_operand:HI 0 "s_register_operand" "")
    1.65 --	(subreg:HI (match_dup 3) 0))]
    1.66 -+	(match_dup 4))]
    1.67 -   "TARGET_ARM"
    1.68 -   "
    1.69 -   operands[2] = gen_reg_rtx (SImode);
    1.70 -   operands[3] = gen_reg_rtx (SImode);
    1.71 -+  operands[4] = gen_lowpart (HImode, operands[3]);
    1.72 -   "
    1.73 - )
    1.74 -