rs6000 / PowerPC now uses no_new_pseudos
David Edelsohn
dje@watson.ibm.com
Sat Apr 3 22:47:00 GMT 1999
* rs6000.md (addsi3, iorsi3, xorsi3, adddi3, iordi3, xordi3,
movsi_got, movsi, movsf): Use no_new_pseudos.
* rs6000.c (rs6000_got_register): Likewise.
(offsettable_mem_opereand): Use || not |.
Index: rs6000.md
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/config/rs6000/rs6000.md,v
retrieving revision 1.51
diff -c -p -r1.51 rs6000.md
*** rs6000.md 1999/02/28 12:27:04 1.51
--- rs6000.md 1999/04/04 06:27:25
***************
*** 895,904 ****
""
"
{
! if (GET_CODE (operands[2]) == CONST_INT && !add_operand (operands[2], SImode))
{
! rtx tmp = ((reload_in_progress || reload_completed
! || rtx_equal_p (operands[0], operands[1]))
? operands[0] : gen_reg_rtx (SImode));
HOST_WIDE_INT low = INTVAL (operands[2]) & 0xffff;
--- 895,904 ----
""
"
{
! if (GET_CODE (operands[2]) == CONST_INT
! && ! add_operand (operands[2], SImode))
{
! rtx tmp = ((no_new_pseudos || rtx_equal_p (operands[0], operands[1]))
? operands[0] : gen_reg_rtx (SImode));
HOST_WIDE_INT low = INTVAL (operands[2]) & 0xffff;
***************
*** 1953,1963 ****
"
{
if (GET_CODE (operands[2]) == CONST_INT
! && !logical_operand (operands[2], SImode))
{
HOST_WIDE_INT value = INTVAL (operands[2]);
! rtx tmp = ((reload_in_progress || reload_completed
! || rtx_equal_p (operands[0], operands[1]))
? operands[0] : gen_reg_rtx (SImode));
emit_insn (gen_iorsi3 (tmp, operands[1],
--- 1953,1962 ----
"
{
if (GET_CODE (operands[2]) == CONST_INT
! && ! logical_operand (operands[2], SImode))
{
HOST_WIDE_INT value = INTVAL (operands[2]);
! rtx tmp = ((no_new_pseudos || rtx_equal_p (operands[0], operands[1]))
? operands[0] : gen_reg_rtx (SImode));
emit_insn (gen_iorsi3 (tmp, operands[1],
***************
*** 2061,2071 ****
"
{
if (GET_CODE (operands[2]) == CONST_INT
! && !logical_operand (operands[2], SImode))
{
HOST_WIDE_INT value = INTVAL (operands[2]);
! rtx tmp = ((reload_in_progress || reload_completed
! || rtx_equal_p (operands[0], operands[1]))
? operands[0] : gen_reg_rtx (SImode));
emit_insn (gen_xorsi3 (tmp, operands[1],
--- 2060,2069 ----
"
{
if (GET_CODE (operands[2]) == CONST_INT
! && ! logical_operand (operands[2], SImode))
{
HOST_WIDE_INT value = INTVAL (operands[2]);
! rtx tmp = ((no_new_pseudos || rtx_equal_p (operands[0], operands[1]))
? operands[0] : gen_reg_rtx (SImode));
emit_insn (gen_xorsi3 (tmp, operands[1],
***************
*** 4798,4807 ****
}
else
if (GET_CODE (operands[2]) == CONST_INT
! && !add_operand (operands[2], DImode))
{
! rtx tmp = ((reload_in_progress || reload_completed
! || rtx_equal_p (operands[0], operands[1]))
? operands[0] : gen_reg_rtx (DImode));
HOST_WIDE_INT low = INTVAL (operands[2]) & 0xffff;
--- 4796,4804 ----
}
else
if (GET_CODE (operands[2]) == CONST_INT
! && ! add_operand (operands[2], DImode))
{
! rtx tmp = ((no_new_pseudos || rtx_equal_p (operands[0], operands[1]))
? operands[0] : gen_reg_rtx (DImode));
HOST_WIDE_INT low = INTVAL (operands[2]) & 0xffff;
***************
*** 5489,5499 ****
"
{
if (GET_CODE (operands[2]) == CONST_INT
! && !logical_operand (operands[2], DImode))
{
HOST_WIDE_INT value = INTVAL (operands[2]);
! rtx tmp = ((reload_in_progress || reload_completed
! || rtx_equal_p (operands[0], operands[1]))
? operands[0] : gen_reg_rtx (DImode));
emit_insn (gen_iordi3 (tmp, operands[1],
--- 5486,5495 ----
"
{
if (GET_CODE (operands[2]) == CONST_INT
! && ! logical_operand (operands[2], DImode))
{
HOST_WIDE_INT value = INTVAL (operands[2]);
! rtx tmp = ((no_new_pseudos || rtx_equal_p (operands[0], operands[1]))
? operands[0] : gen_reg_rtx (DImode));
emit_insn (gen_iordi3 (tmp, operands[1],
***************
*** 5558,5568 ****
"
{
if (GET_CODE (operands[2]) == CONST_INT
! && !logical_operand (operands[2], DImode))
{
HOST_WIDE_INT value = INTVAL (operands[2]);
! rtx tmp = ((reload_in_progress || reload_completed
! || rtx_equal_p (operands[0], operands[1]))
? operands[0] : gen_reg_rtx (DImode));
emit_insn (gen_xordi3 (tmp, operands[1],
--- 5554,5563 ----
"
{
if (GET_CODE (operands[2]) == CONST_INT
! && ! logical_operand (operands[2], DImode))
{
HOST_WIDE_INT value = INTVAL (operands[2]);
! rtx tmp = ((no_new_pseudos || rtx_equal_p (operands[0], operands[1]))
? operands[0] : gen_reg_rtx (DImode));
emit_insn (gen_xordi3 (tmp, operands[1],
***************
*** 5796,5804 ****
value = INTVAL (offset);
if (value != 0)
{
! rtx tmp = ((reload_in_progress || reload_completed)
! ? operands[0]
! : gen_reg_rtx (Pmode));
emit_insn (gen_movsi_got (tmp, operands[1]));
emit_insn (gen_addsi3 (operands[0], tmp, offset));
DONE;
--- 5791,5797 ----
value = INTVAL (offset);
if (value != 0)
{
! rtx tmp = (no_new_pseudos ? operands[0] : gen_reg_rtx (Pmode));
emit_insn (gen_movsi_got (tmp, operands[1]));
emit_insn (gen_addsi3 (operands[0], tmp, offset));
DONE;
***************
*** 5891,5898 ****
&& GET_CODE (operands[1]) != HIGH
&& GET_CODE (operands[1]) != CONST_INT)
{
! rtx target = (reload_completed || reload_in_progress)
! ? operands[0] : gen_reg_rtx (SImode);
/* If this is a function address on -mcall-aixdesc or -mcall-nt,
convert it to the address of the descriptor. */
--- 5884,5890 ----
&& GET_CODE (operands[1]) != HIGH
&& GET_CODE (operands[1]) != CONST_INT)
{
! rtx target = (no_new_pseudos ? operands[0] : gen_reg_rtx (SImode));
/* If this is a function address on -mcall-aixdesc or -mcall-nt,
convert it to the address of the descriptor. */
***************
*** 5926,5935 ****
&& (GET_CODE (sym) == SYMBOL_REF || GET_CODE (sym) == LABEL_REF))
{
unsigned HOST_WIDE_INT value = INTVAL (const_term);
! int new_reg_p = (flag_expensive_optimizations
! && !reload_completed
! && !reload_in_progress);
! rtx tmp1 = (new_reg_p && value != 0) ? gen_reg_rtx (SImode) : operands[0];
emit_insn (gen_movsi (tmp1, sym));
if (INTVAL (const_term) != 0)
--- 5918,5926 ----
&& (GET_CODE (sym) == SYMBOL_REF || GET_CODE (sym) == LABEL_REF))
{
unsigned HOST_WIDE_INT value = INTVAL (const_term);
! int new_reg_p = (flag_expensive_optimizations && ! no_new_pseudos);
! rtx tmp1 = ((new_reg_p && value != 0)
! ? gen_reg_rtx (SImode) : operands[0]);
emit_insn (gen_movsi (tmp1, sym));
if (INTVAL (const_term) != 0)
***************
*** 6161,6168 ****
&& (FP_REGNO_P (REGNO (operands[1]))
|| REGNO (operands[1]) >= FIRST_PSEUDO_REGISTER))
{
! rtx newreg
! = reload_in_progress ? operands[1] : gen_reg_rtx (SFmode);
emit_insn (gen_aux_truncdfsf2 (newreg, operands[1]));
operands[1] = newreg;
}
--- 6152,6158 ----
&& (FP_REGNO_P (REGNO (operands[1]))
|| REGNO (operands[1]) >= FIRST_PSEUDO_REGISTER))
{
! rtx newreg = (no_new_pseudos ? operands[1] : gen_reg_rtx (SFmode));
emit_insn (gen_aux_truncdfsf2 (newreg, operands[1]));
operands[1] = newreg;
}
Index: rs6000.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/config/rs6000/rs6000.c,v
retrieving revision 1.63
diff -c -p -r1.63 rs6000.c
*** rs6000.c 1999/03/15 19:47:42 1.63
--- rs6000.c 1999/04/04 06:27:56
*************** offsettable_mem_operand (op, mode)
*** 854,860 ****
enum machine_mode mode;
{
return ((GET_CODE (op) == MEM)
! && offsettable_address_p (reload_completed | reload_in_progress,
mode, XEXP (op, 0)));
}
--- 854,860 ----
enum machine_mode mode;
{
return ((GET_CODE (op) == MEM)
! && offsettable_address_p (reload_completed || reload_in_progress,
mode, XEXP (op, 0)));
}
*************** struct rtx_def *
*** 2335,2344 ****
rs6000_got_register (value)
rtx value;
{
! if (!current_function_uses_pic_offset_table || !pic_offset_table_rtx)
{
! if (reload_in_progress || reload_completed)
! fatal_insn ("internal error -- needed new GOT register during reload phase to load:", value);
current_function_uses_pic_offset_table = 1;
pic_offset_table_rtx = gen_rtx_REG (Pmode, GOT_TOC_REGNUM);
--- 2335,2345 ----
rs6000_got_register (value)
rtx value;
{
! if (! current_function_uses_pic_offset_table || ! pic_offset_table_rtx)
{
! if (no_new_pseudos)
! fatal_insn ("internal error -- needed new GOT register during reload phase to load:",
! value);
current_function_uses_pic_offset_table = 1;
pic_offset_table_rtx = gen_rtx_REG (Pmode, GOT_TOC_REGNUM);
More information about the Gcc-patches
mailing list