expmed.c (store_bit_field): Use simplify_gen_subreg to make SUBREG so we avoid SUBREG...
authorAldy Hernandez <aldyh@redhat.com>
Fri, 2 Nov 2001 22:07:29 +0000 (22:07 +0000)
committerAldy Hernandez <aldyh@gcc.gnu.org>
Fri, 2 Nov 2001 22:07:29 +0000 (22:07 +0000)
        * expmed.c (store_bit_field): Use simplify_gen_subreg to make
        SUBREG so we avoid SUBREGing memory.

From-SVN: r46721

gcc/ChangeLog
gcc/expmed.c

index c2c619f3d3c9a9003113da94569868e15209b7fc..986b0d0886fbec0ecb2fb05ef63e6f27b0737960 100644 (file)
@@ -1,3 +1,8 @@
+2001-11-02  Aldy Hernandez  <aldyh@redhat.com>
+
+        * expmed.c (store_bit_field): Use simplify_gen_subreg to make
+        SUBREG so we avoid SUBREGing memory.
+
 2001-11-02  DJ Delorie  <dj@redhat.com>
 
        * config/rs6000/rs6000.c (rs6000_emit_move): Make sure that
index b08a8c60c4620e5d821bcbbf61f4607a134ee830..10c514164fed2e82c2cf6b0379d7db313f3d7bca 100644 (file)
@@ -638,12 +638,7 @@ store_bit_field (str_rtx, bitsize, bitnum, fieldmode, value, align, total_size)
                 if we must narrow it, be sure we do it correctly.  */
 
              if (GET_MODE_SIZE (GET_MODE (value)) < GET_MODE_SIZE (maxmode))
-               {
-                 /* Avoid making subreg of a subreg, or of a mem.  */
-                 if (GET_CODE (value1) != REG)
-                   value1 = copy_to_reg (value1);
-                 value1 = gen_rtx_SUBREG (maxmode, value1, 0);
-               }
+               value1 = simplify_gen_subreg (maxmode, value1, GET_MODE (value1), 0);
              else
                value1 = gen_lowpart (maxmode, value1);
            }