Commit 7c56249d by Jeff Law

(registers_ok_for_ldd_peep, addrs_ok_for_ldd_peep):

Functions renamed from registers_ok_for_ldd and
memory_ok_for_ldd repectively.  All callers changed.
(register_ok_for_ldd): New function to determine if a register
is a pseudo or the first register in a hard register pair.
(mem_aligned_8): No longer static.  Return 0 instead of aborting
when presented with an rtx which is not a MEM.
(eligible_for_epilogue_delay): Use in_uncond_branch_delay since this
is an unconditional branch.

From-SVN: r1662
parent 19858600
...@@ -498,7 +498,7 @@ eligible_for_epilogue_delay (trial, slot) ...@@ -498,7 +498,7 @@ eligible_for_epilogue_delay (trial, slot)
if (leaf_function) if (leaf_function)
{ {
if (leaf_return_peephole_ok ()) if (leaf_return_peephole_ok ())
return (get_attr_in_branch_delay (trial) == IN_BRANCH_DELAY_TRUE); return (get_attr_in_uncond_branch_delay (trial) == IN_BRANCH_DELAY_TRUE);
return 0; return 0;
} }
...@@ -983,7 +983,7 @@ singlemove_string (operands) ...@@ -983,7 +983,7 @@ singlemove_string (operands)
aligned at least to a 8-byte boundary. This should only be called aligned at least to a 8-byte boundary. This should only be called
for memory accesses whose size is 8 bytes or larger. */ for memory accesses whose size is 8 bytes or larger. */
static int int
mem_aligned_8 (mem) mem_aligned_8 (mem)
register rtx mem; register rtx mem;
{ {
...@@ -992,7 +992,7 @@ mem_aligned_8 (mem) ...@@ -992,7 +992,7 @@ mem_aligned_8 (mem)
register rtx offset; register rtx offset;
if (GET_CODE (mem) != MEM) if (GET_CODE (mem) != MEM)
abort (); /* It's gotta be a MEM! */ return 0; /* It's gotta be a MEM! */
addr = XEXP (mem, 0); addr = XEXP (mem, 0);
...@@ -2596,7 +2596,7 @@ output_arc_profiler (arcno, insert_after) ...@@ -2596,7 +2596,7 @@ output_arc_profiler (arcno, insert_after)
abort if we are passed pseudo registers. */ abort if we are passed pseudo registers. */
int int
registers_ok_for_ldd (reg1, reg2) registers_ok_for_ldd_peep (reg1, reg2)
rtx reg1, reg2; rtx reg1, reg2;
{ {
...@@ -2631,7 +2631,7 @@ registers_ok_for_ldd (reg1, reg2) ...@@ -2631,7 +2631,7 @@ registers_ok_for_ldd (reg1, reg2)
need only check that the offset for addr1 % 8 == 0. */ need only check that the offset for addr1 % 8 == 0. */
int int
memory_ok_for_ldd (addr1, addr2) addrs_ok_for_ldd_peep (addr1, addr2)
rtx addr1, addr2; rtx addr1, addr2;
{ {
int reg1, offset1; int reg1, offset1;
...@@ -2689,6 +2689,26 @@ memory_ok_for_ldd (addr1, addr2) ...@@ -2689,6 +2689,26 @@ memory_ok_for_ldd (addr1, addr2)
instructions. */ instructions. */
return 1; return 1;
} }
/* Return 1 if reg is a pseudo, or is the first register in
a hard register pair. This makes it a candidate for use in
ldd and std insns. */
int
register_ok_for_ldd (reg)
rtx reg;
{
/* We might have been passed a SUBREG. */
if (GET_CODE (reg) != REG)
return 0;
if (REGNO (reg) < FIRST_PSEUDO_REGISTER)
return (REGNO (reg) % 2 == 0);
else
return 1;
}
/* Print operand X (an rtx) in assembler syntax to file FILE. /* Print operand X (an rtx) in assembler syntax to file FILE.
CODE is a letter or dot (`z' in `%z0') or 0 if no letter was specified. CODE is a letter or dot (`z' in `%z0') or 0 if no letter was specified.
......
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