expr.c (expand_assignment): Do not try to optimize a aggregate address which has...
authorJeffrey A Law <law@cygnus.com>
Tue, 23 Mar 1999 22:33:35 +0000 (22:33 +0000)
committerJeff Law <law@gcc.gnu.org>
Tue, 23 Mar 1999 22:33:35 +0000 (15:33 -0700)
        * expr.c (expand_assignment): Do not try to optimize a aggregate
        address which has VOIDmode.

From-SVN: r25934

gcc/ChangeLog
gcc/expr.c

index 897e1c1..9573ce7 100644 (file)
@@ -1,3 +1,8 @@
+Tue Mar 23 23:32:14 1999  Jeffrey A Law  (law@cygnus.com)
+
+       * expr.c (expand_assignment): Do not try to optimize a aggregate
+       address which has VOIDmode.
+
 Tue Mar 23 22:51:48 1999  Mumit Khan  <khan@xraylith.wisc.edu>
                          Donn Terry  <donn@interix.com>
 
index a09f269..ab53314 100644 (file)
@@ -3276,8 +3276,11 @@ expand_assignment (to, from, want_value, suggest_reg)
 #endif
            }
 
+         /* A constant address in TO_RTX can have VOIDmode, we must not try
+            to call force_reg for that case.  Avoid that case.  */
          if (GET_CODE (to_rtx) == MEM
              && GET_MODE (to_rtx) == BLKmode
+             && GET_MODE (XEXP (to_rtx, 0)) != VOIDmode
              && bitsize
              && (bitpos % bitsize) == 0 
              && (bitsize % GET_MODE_ALIGNMENT (mode1)) == 0