(gen_lowpart_common): When converting a floating point value into an
authorRichard Kenner <kenner@gcc.gnu.org>
Wed, 23 Oct 1996 21:15:58 +0000 (17:15 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Wed, 23 Oct 1996 21:15:58 +0000 (17:15 -0400)
integer, use WORD as (first) word.

From-SVN: r13011

gcc/emit-rtl.c

index 522b95ff1c972d048e61c3481027f9d58b106e60..337e9732f52aff3eca04c3f6ccc7877c10683078 100644 (file)
@@ -811,7 +811,7 @@ gen_lowpart_common (mode, x)
           && GET_CODE (x) == CONST_DOUBLE
           && GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT
           && GET_MODE_BITSIZE (mode) == BITS_PER_WORD)
-    return operand_subword (x, 0, 0, GET_MODE (x));
+    return operand_subword (x, word, 0, GET_MODE (x));
 
   /* Similarly, if this is converting a floating-point value into a
      two-word integer, we can do this one word at a time and make an
@@ -827,8 +827,10 @@ gen_lowpart_common (mode, x)
           && GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT
           && GET_MODE_BITSIZE (mode) == 2 * BITS_PER_WORD)
     {
-      rtx lowpart = operand_subword (x, WORDS_BIG_ENDIAN, 0, GET_MODE (x));
-      rtx highpart = operand_subword (x, ! WORDS_BIG_ENDIAN, 0, GET_MODE (x));
+      rtx lowpart
+       = operand_subword (x, word + WORDS_BIG_ENDIAN, 0, GET_MODE (x));
+      rtx highpart
+       = operand_subword (x, word + ! WORDS_BIG_ENDIAN, 0, GET_MODE (x));
 
       if (lowpart && GET_CODE (lowpart) == CONST_INT
          && highpart && GET_CODE (highpart) == CONST_INT)