* expr.c (expand_expr_real): More curefully expand union casts.
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 10 Jan 2004 20:50:53 +0000 (20:50 +0000)
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 10 Jan 2004 20:50:53 +0000 (20:50 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75649 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/expr.c

index c6c92b8..3fe675a 100644 (file)
@@ -1,3 +1,7 @@
+2004-01-10  Jan Hubicka  <jh@suse.cz>
+
+       * expr.c (expand_expr_real):  More curefully expand union casts.
+
 2004-01-10  Kazu Hirata  <kazu@cs.umass.edu>
 
        * config/m32r/m32r.md (flush_icache): Use 1 for
index 6442b3d..73fb965 100644 (file)
@@ -7509,7 +7509,12 @@ expand_expr_real (tree exp, rtx target, enum machine_mode tmode,
            }
 
          if (target == 0)
-           target = assign_temp (type, 0, 1, 1);
+           {
+             if (TYPE_MODE (type) != BLKmode)
+               target = gen_reg_rtx (TYPE_MODE (type));
+             else
+               target = assign_temp (type, 0, 1, 1);
+           }
 
          if (GET_CODE (target) == MEM)
            /* Store data into beginning of memory target.  */