Commit 44f51d4a by Richard Kenner

(expand_float): Fix error in last change.

From-SVN: r7391
parent 3537b3d4
...@@ -3083,6 +3083,12 @@ expand_float (to, from, unsignedp) ...@@ -3083,6 +3083,12 @@ expand_float (to, from, unsignedp)
rtx temp1; rtx temp1;
rtx neglabel = gen_label_rtx (); rtx neglabel = gen_label_rtx ();
/* Don't use TARGET if it isn't a register or is a
hard register. */
if (GET_CODE (target) != REG
|| REGNO (target) < FIRST_PSEUDO_REGISTER)
target = gen_reg_rtx (fmode);
imode = GET_MODE (from); imode = GET_MODE (from);
do_pending_stack_adjust (); do_pending_stack_adjust ();
...@@ -3101,11 +3107,10 @@ expand_float (to, from, unsignedp) ...@@ -3101,11 +3107,10 @@ expand_float (to, from, unsignedp)
emit_label (neglabel); emit_label (neglabel);
temp = expand_binop (imode, and_optab, from, const1_rtx, temp = expand_binop (imode, and_optab, from, const1_rtx,
0, 1, 0); 0, 1, 0);
temp1 = expand_binop (imode, lshr_optab, from, const1_rtx, temp1 = expand_binop (imode, lshr_optab, from, const1_rtx,
from, 1, 0); 0, 1, 0);
temp = expand_binop (imode, ior_optab, temp, temp1, temp = expand_binop (imode, ior_optab, temp, temp1, temp, 1, 0);
temp, 1, 0);
expand_float (target, temp, 0); expand_float (target, temp, 0);
/* Multiply by 2 to undo the shift above. */ /* Multiply by 2 to undo the shift above. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment