OSDN Git Service

* expmed.c (store_bit_field): Use simplify_gen_subreg to make
authoraldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 2 Nov 2001 22:07:29 +0000 (22:07 +0000)
committeraldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 2 Nov 2001 22:07:29 +0000 (22:07 +0000)
        SUBREG so we avoid SUBREGing memory.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46721 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/expmed.c

index c2c619f..986b0d0 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 b08a8c6..10c5141 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);
            }