From: Richard Kenner Date: Thu, 6 May 1993 09:47:46 +0000 (-0400) Subject: (store_split_bit_field): Properly handle VALUE when it is a X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e54d80d01416c78a81ae5e2095e853f308ab46cb;p=gcc.git (store_split_bit_field): Properly handle VALUE when it is a CONST_DOUBLE. From-SVN: r4354 --- diff --git a/gcc/expmed.c b/gcc/expmed.c index 6e7efadb8fa..faa48431b99 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -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. */