(store_split_bit_field): Properly handle VALUE when it is a
authorRichard Kenner <kenner@gcc.gnu.org>
Thu, 6 May 1993 09:47:46 +0000 (05:47 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Thu, 6 May 1993 09:47:46 +0000 (05:47 -0400)
CONST_DOUBLE.

From-SVN: r4354

gcc/expmed.c

index 6e7efadb8faa4e0abf122ee907ac1e0714ab28aa..faa48431b99015700125a07973670aa9a713d33a 100644 (file)
@@ -1,6 +1,6 @@
 /* Medium-level subroutines: convert bit-field store and extract
    and shifts, multiplies and divides to rtl instructions.
-   Copyright (C) 1987, 1988, 1989, 1992 Free Software Foundation, Inc.
+   Copyright (C) 1987, 1988, 1989, 1992, 1993 Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -680,8 +680,13 @@ store_split_bit_field (op0, bitsize, bitpos, value, align)
 
   if (GET_MODE (value) != VOIDmode)
     value = convert_to_mode (word_mode, value, 1);
+
+  if (GET_CODE (value) == CONST_DOUBLE
+      && (part1 = gen_lowpart_common (word_mode, value)) != 0)
+    value = part1;
+
   if (CONSTANT_P (value) && GET_CODE (value) != CONST_INT)
-    value = copy_to_reg (value);
+    value = copy_to_mode_reg (word_mode, value);
 
   /* Split the value into two parts:
      PART1 gets that which goes in the first word; PART2 the other.  */