OSDN Git Service

* expmed.c (store_bit_field): Use int_mode_for_mode to find
authoramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 2 Dec 2002 14:44:17 +0000 (14:44 +0000)
committeramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 2 Dec 2002 14:44:17 +0000 (14:44 +0000)
corresponding mode of non-integer mode, unless it is VOIDmode.

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

gcc/ChangeLog
gcc/expmed.c

index f09b4db..64558f1 100644 (file)
@@ -1,3 +1,8 @@
+Mon Dec  2 14:43:22 2002  J"orn Rennecke <joern.rennecke@superh.com>
+
+       * expmed.c (store_bit_field): Use int_mode_for_mode to find
+       corresponding mode of non-integer mode, unless it is VOIDmode.
+
 2002-12-02  Kazu Hirata  <kazu@cs.umass.edu>
 
        * config/h8300/h8300.md (stm_h8300s_2): New.
index 6b365b9..d1c89f2 100644 (file)
@@ -535,7 +535,9 @@ store_bit_field (str_rtx, bitsize, bitnum, fieldmode, value, total_size)
      structure fields.  */
   if (GET_MODE_CLASS (GET_MODE (value)) != MODE_INT
       && GET_MODE_CLASS (GET_MODE (value)) != MODE_PARTIAL_INT)
-    value = gen_lowpart (word_mode, value);
+    value = gen_lowpart ((GET_MODE (value) == VOIDmode
+                         ? word_mode : int_mode_for_mode (GET_MODE (value))),
+                        value);
 
   /* Now OFFSET is nonzero only if OP0 is memory
      and is therefore always measured in bytes.  */