]> gcc.gnu.org Git - gcc.git/commitdiff
re PR target/18701 (mmix-knuth-mmixware gcc.c-torture/execute failures: 20010224...
authorHans-Peter Nilsson <hp@bitrange.com>
Fri, 31 Dec 2004 16:24:48 +0000 (16:24 +0000)
committerHans-Peter Nilsson <hp@gcc.gnu.org>
Fri, 31 Dec 2004 16:24:48 +0000 (16:24 +0000)
PR target/18701
* combine.c (gen_lowpart_for_combine): When stripping SUBREG of
MEM, adjust imode and isize.

From-SVN: r92760

gcc/ChangeLog
gcc/combine.c

index f6d95d3d98a433323e0dd2f8871620ec94214726..81d0b997c41400fa37a445bbbca48717fd66899a 100644 (file)
@@ -1,3 +1,9 @@
+2004-12-31  Hans-Peter Nilsson  <hp@bitrange.com>
+
+       PR target/18701
+       * combine.c (gen_lowpart_for_combine): When stripping SUBREG of
+       MEM, adjust imode and isize.
+
 2004-12-30  Richard Henderson  <rth@redhat.com>
 
        * config/ia64/ia64.c (hfa_element_mode): Return false for 
index 800e65ea1006b6c4ad4ea5db3a8872a57d841d8a..61b93dd30489d2c7b34350e3bd607cb896d1b0bc 100644 (file)
@@ -9355,8 +9355,16 @@ gen_lowpart_for_combine (enum machine_mode omode, rtx x)
   if (GET_CODE (x) == SUBREG && MEM_P (SUBREG_REG (x)))
     {
       x = SUBREG_REG (x);
-      if (GET_MODE (x) == omode)
+
+      /* For use in case we fall down into the address adjustments
+        further below, we need to adjust the known mode and size of
+        x; imode and isize, since we just adjusted x.  */
+      imode = GET_MODE (x);
+
+      if (imode == omode)
        return x;
+
+      isize = GET_MODE_SIZE (imode);
     }
 
   result = gen_lowpart_common (omode, x);
This page took 0.090452 seconds and 5 git commands to generate.