Commit cedced65 by David S. Miller Committed by David S. Miller

Use can_create_pseudo_p() in the sparc backend.

gcc/

	* config/sparc/sparc.c (sparc_expand_move): Use
	can_create_pseudo_p.
	(sparc_emit_set_const32): Likewise.
	(sparc_emit_set_const64_longway): Likewise.
	(sparc_emit_set_const64): Likewise.
	(sparc_legitimize_pic_address): Likewise.
	(memory_ok_for_ldd): Likewise.

From-SVN: r180235
parent fa2988b4
2011-10-19 David S. Miller <davem@davemloft.net>
* config/sparc/sparc.c (sparc_expand_move): Use
can_create_pseudo_p.
(sparc_emit_set_const32): Likewise.
(sparc_emit_set_const64_longway): Likewise.
(sparc_emit_set_const64): Likewise.
(sparc_legitimize_pic_address): Likewise.
(memory_ok_for_ldd): Likewise.
2011-10-20 Dehao Chen <dehao@google.com> 2011-10-20 Dehao Chen <dehao@google.com>
* profile.c (compute_branch_probabilities): Compute and dump the * profile.c (compute_branch_probabilities): Compute and dump the
...@@ -1316,7 +1316,7 @@ sparc_expand_move (enum machine_mode mode, rtx *operands) ...@@ -1316,7 +1316,7 @@ sparc_expand_move (enum machine_mode mode, rtx *operands)
&& (mode == SFmode && (mode == SFmode
/* And any DF constant in integer registers. */ /* And any DF constant in integer registers. */
|| (mode == DFmode || (mode == DFmode
&& (reload_completed || reload_in_progress)))) && ! can_create_pseudo_p ())))
return false; return false;
operands[1] = force_const_mem (mode, operands[1]); operands[1] = force_const_mem (mode, operands[1]);
...@@ -1362,11 +1362,9 @@ static void ...@@ -1362,11 +1362,9 @@ static void
sparc_emit_set_const32 (rtx op0, rtx op1) sparc_emit_set_const32 (rtx op0, rtx op1)
{ {
enum machine_mode mode = GET_MODE (op0); enum machine_mode mode = GET_MODE (op0);
rtx temp; rtx temp = op0;
if (reload_in_progress || reload_completed) if (can_create_pseudo_p ())
temp = op0;
else
temp = gen_reg_rtx (mode); temp = gen_reg_rtx (mode);
if (GET_CODE (op1) == CONST_INT) if (GET_CODE (op1) == CONST_INT)
...@@ -1739,11 +1737,9 @@ sparc_emit_set_const64_longway (rtx op0, rtx temp, ...@@ -1739,11 +1737,9 @@ sparc_emit_set_const64_longway (rtx op0, rtx temp,
unsigned HOST_WIDE_INT high_bits, unsigned HOST_WIDE_INT high_bits,
unsigned HOST_WIDE_INT low_bits) unsigned HOST_WIDE_INT low_bits)
{ {
rtx sub_temp; rtx sub_temp = op0;
if (reload_in_progress || reload_completed) if (can_create_pseudo_p ())
sub_temp = op0;
else
sub_temp = gen_reg_rtx (DImode); sub_temp = gen_reg_rtx (DImode);
if ((high_bits & 0xfffffc00) != 0) if ((high_bits & 0xfffffc00) != 0)
...@@ -1762,7 +1758,7 @@ sparc_emit_set_const64_longway (rtx op0, rtx temp, ...@@ -1762,7 +1758,7 @@ sparc_emit_set_const64_longway (rtx op0, rtx temp,
sub_temp = temp; sub_temp = temp;
} }
if (!reload_in_progress && !reload_completed) if (can_create_pseudo_p ())
{ {
rtx temp2 = gen_reg_rtx (DImode); rtx temp2 = gen_reg_rtx (DImode);
rtx temp3 = gen_reg_rtx (DImode); rtx temp3 = gen_reg_rtx (DImode);
...@@ -1970,7 +1966,7 @@ sparc_emit_set_const64 (rtx op0, rtx op1) ...@@ -1970,7 +1966,7 @@ sparc_emit_set_const64 (rtx op0, rtx op1)
&& (GET_CODE (op0) == SUBREG && (GET_CODE (op0) == SUBREG
|| (REG_P (op0) && ! SPARC_FP_REG_P (REGNO (op0))))); || (REG_P (op0) && ! SPARC_FP_REG_P (REGNO (op0)))));
if (reload_in_progress || reload_completed) if (! can_create_pseudo_p ())
temp = op0; temp = op0;
if (GET_CODE (op1) != CONST_INT) if (GET_CODE (op1) != CONST_INT)
...@@ -3685,7 +3681,7 @@ sparc_legitimize_pic_address (rtx orig, rtx reg) ...@@ -3685,7 +3681,7 @@ sparc_legitimize_pic_address (rtx orig, rtx reg)
if (reg == 0) if (reg == 0)
{ {
gcc_assert (! reload_in_progress && ! reload_completed); gcc_assert (can_create_pseudo_p ());
reg = gen_reg_rtx (Pmode); reg = gen_reg_rtx (Pmode);
} }
...@@ -3694,7 +3690,7 @@ sparc_legitimize_pic_address (rtx orig, rtx reg) ...@@ -3694,7 +3690,7 @@ sparc_legitimize_pic_address (rtx orig, rtx reg)
/* If not during reload, allocate another temp reg here for loading /* If not during reload, allocate another temp reg here for loading
in the address, so that these instructions can be optimized in the address, so that these instructions can be optimized
properly. */ properly. */
rtx temp_reg = ((reload_in_progress || reload_completed) rtx temp_reg = (! can_create_pseudo_p ()
? reg : gen_reg_rtx (Pmode)); ? reg : gen_reg_rtx (Pmode));
/* Must put the SYMBOL_REF inside an UNSPEC here so that cse /* Must put the SYMBOL_REF inside an UNSPEC here so that cse
...@@ -3753,7 +3749,7 @@ sparc_legitimize_pic_address (rtx orig, rtx reg) ...@@ -3753,7 +3749,7 @@ sparc_legitimize_pic_address (rtx orig, rtx reg)
if (reg == 0) if (reg == 0)
{ {
gcc_assert (! reload_in_progress && ! reload_completed); gcc_assert (can_create_pseudo_p ());
reg = gen_reg_rtx (Pmode); reg = gen_reg_rtx (Pmode);
} }
...@@ -3766,7 +3762,7 @@ sparc_legitimize_pic_address (rtx orig, rtx reg) ...@@ -3766,7 +3762,7 @@ sparc_legitimize_pic_address (rtx orig, rtx reg)
{ {
if (SMALL_INT (offset)) if (SMALL_INT (offset))
return plus_constant (base, INTVAL (offset)); return plus_constant (base, INTVAL (offset));
else if (! reload_in_progress && ! reload_completed) else if (can_create_pseudo_p ())
offset = force_reg (Pmode, offset); offset = force_reg (Pmode, offset);
else else
/* If we reach here, then something is seriously wrong. */ /* If we reach here, then something is seriously wrong. */
...@@ -7900,7 +7896,7 @@ memory_ok_for_ldd (rtx op) ...@@ -7900,7 +7896,7 @@ memory_ok_for_ldd (rtx op)
if (TARGET_ARCH32 && !mem_min_alignment (op, 8)) if (TARGET_ARCH32 && !mem_min_alignment (op, 8))
return 0; return 0;
if ((reload_in_progress || reload_completed) if (! can_create_pseudo_p ()
&& !strict_memory_address_p (Pmode, XEXP (op, 0))) && !strict_memory_address_p (Pmode, XEXP (op, 0)))
return 0; return 0;
} }
......
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