Commit 4bb43724 by Richard Henderson Committed by Jim Wilson

Patch from Richard Henderson for alpha-linux ld.so bug.

	* alpha.md (movdi): Handle CONST_DOUBLE for TARGET_BUILD_CONSTANTS.

From-SVN: r15459
parent 0d24ff5d
Mon Sep 15 15:24:00 1997 Richard Henderson <rth@cygnus.com> Mon Sep 15 15:24:00 1997 Richard Henderson <rth@cygnus.com>
* alpha.md (movdi): Handle CONST_DOUBLE for TARGET_BUILD_CONSTANTS.
* alpha/alpha.c (output_prolog): New variable sa_reg. Use it for * alpha/alpha.c (output_prolog): New variable sa_reg. Use it for
out-or-range reg_offset. out-or-range reg_offset.
(output_epilog): Likewise. (output_epilog): Likewise.
......
...@@ -3830,11 +3830,21 @@ ...@@ -3830,11 +3830,21 @@
else else
operands[1] = tem; operands[1] = tem;
} }
else if (TARGET_BUILD_CONSTANTS else if (CONSTANT_P (operands[1]))
&& GET_CODE (operands[1]) == CONST_INT) {
if (TARGET_BUILD_CONSTANTS)
{ {
#if HOST_BITS_PER_WIDE_INT == 64 #if HOST_BITS_PER_WIDE_INT == 64
tem = alpha_emit_set_long_const (operands[0], INTVAL (operands[1])); HOST_WIDE_INT i;
if (GET_CODE (operands[1]) == CONST_INT)
i = INTVAL (operands[1]);
else if (GET_CODE (operands[1]) == CONST_DOUBLE)
i = CONST_DOUBLE_LOW (operands[1]);
else
abort();
tem = alpha_emit_set_long_const (operands[0], i);
if (rtx_equal_p (tem, operands[0])) if (rtx_equal_p (tem, operands[0]))
DONE; DONE;
else else
...@@ -3843,7 +3853,7 @@ ...@@ -3843,7 +3853,7 @@
abort(); abort();
#endif #endif
} }
else if (CONSTANT_P (operands[1])) else
{ {
operands[1] = force_const_mem (DImode, operands[1]); operands[1] = force_const_mem (DImode, operands[1]);
if (reload_in_progress) if (reload_in_progress)
...@@ -3855,6 +3865,7 @@ ...@@ -3855,6 +3865,7 @@
else else
operands[1] = validize_mem (operands[1]); operands[1] = validize_mem (operands[1]);
} }
}
else else
abort (); abort ();
}") }")
......
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