(emit_group_load): Call operand_subword instead of creating
authorJim Wilson <wilson@gcc.gnu.org>
Tue, 18 Mar 1997 22:25:56 +0000 (14:25 -0800)
committerJim Wilson <wilson@gcc.gnu.org>
Tue, 18 Mar 1997 22:25:56 +0000 (14:25 -0800)
an explicit SUBREG.

From-SVN: r13743

gcc/expr.c

index 5e5cb10..8797596 100644 (file)
@@ -1802,9 +1802,11 @@ emit_group_load (x, y)
             to allow for AIX with 4 DF arguments after a single SI arg.  The
             last DF argument will only load 1 word into the integer registers,
             but load a DF value into the float registers.  */
-         else if (GET_MODE_SIZE (GET_MODE (target_reg))
-                  <= GET_MODE_SIZE (GET_MODE (y)))
-           source = gen_rtx (SUBREG, GET_MODE (target_reg), y, 0);
+         else if ((GET_MODE_SIZE (GET_MODE (target_reg))
+                   <= GET_MODE_SIZE (GET_MODE (y)))
+                  && GET_MODE (target_reg) == word_mode)
+           /* This might be a const_double, so we can't just use SUBREG.  */
+           source = operand_subword (y, 0, 0, VOIDmode);
          else
            abort ();       
        }