loop.c (libcall_other_regs): Make extern.
* loop.c (libcall_other_regs): Make extern. * rtl.h (find_last_value): Add parameter to prototype. (libcall_other_reg): Add extern declaration. * rtlanal.c (find_last_value): Add another parameter to allow a definition using a hardware register to be found as well. From-SVN: r25378
This commit is contained in:
parent
a4c6502a66
commit
89d3d44249
@ -1,3 +1,11 @@
|
||||
Mon Feb 22 16:54:18 EST 1999 Andrew MacLeod <amacleod@cygnus.com>
|
||||
|
||||
* loop.c (libcall_other_regs): Make extern.
|
||||
* rtl.h (find_last_value): Add parameter to prototype.
|
||||
(libcall_other_reg): Add extern declaration.
|
||||
* rtlanal.c (find_last_value): Add another parameter to allow
|
||||
a definition using a hardware register to be found as well.
|
||||
|
||||
Mon Feb 22 13:33:47 1999 Mark Mitchell <mark@markmitchell.com>
|
||||
|
||||
* cse.c (dump_class): New function.
|
||||
|
@ -291,7 +291,6 @@ static void mark_loop_jump PROTO((rtx, int));
|
||||
static void prescan_loop PROTO((rtx, rtx));
|
||||
static int reg_in_basic_block_p PROTO((rtx, rtx));
|
||||
static int consec_sets_invariant_p PROTO((rtx, int, rtx));
|
||||
static rtx libcall_other_reg PROTO((rtx, rtx));
|
||||
static int labels_in_range_p PROTO((rtx, int));
|
||||
static void count_one_set PROTO((rtx, rtx, varray_type, rtx *));
|
||||
|
||||
@ -1241,7 +1240,7 @@ record_excess_regs (in_this, not_in_this, output)
|
||||
If there are none, return 0.
|
||||
If there are one or more, return an EXPR_LIST containing all of them. */
|
||||
|
||||
static rtx
|
||||
rtx
|
||||
libcall_other_reg (insn, equiv)
|
||||
rtx insn, equiv;
|
||||
{
|
||||
|
@ -1013,7 +1013,7 @@ extern int modified_in_p PROTO((rtx, rtx));
|
||||
extern int reg_set_p PROTO((rtx, rtx));
|
||||
extern rtx single_set PROTO((rtx));
|
||||
extern int multiple_sets PROTO((rtx));
|
||||
extern rtx find_last_value PROTO((rtx, rtx *, rtx));
|
||||
extern rtx find_last_value PROTO((rtx, rtx *, rtx, int));
|
||||
extern int refers_to_regno_p PROTO((int, int, rtx, rtx *));
|
||||
extern int reg_overlap_mentioned_p PROTO((rtx, rtx));
|
||||
extern void note_stores PROTO((rtx, void (*)()));
|
||||
@ -1390,6 +1390,7 @@ extern void print_inline_rtx PROTO ((FILE *, rtx, int));
|
||||
|
||||
/* In loop.c */
|
||||
extern void init_loop PROTO ((void));
|
||||
extern rtx libcall_other_reg PROTO ((rtx, rtx));
|
||||
#ifdef BUFSIZ
|
||||
extern void loop_optimize PROTO ((rtx, FILE *, int, int));
|
||||
#endif
|
||||
|
@ -740,13 +740,15 @@ multiple_sets (insn)
|
||||
/* Return the last thing that X was assigned from before *PINSN. Verify that
|
||||
the object is not modified up to VALID_TO. If it was, if we hit
|
||||
a partial assignment to X, or hit a CODE_LABEL first, return X. If we
|
||||
found an assignment, update *PINSN to point to it. */
|
||||
found an assignment, update *PINSN to point to it.
|
||||
ALLOW_HWREG is set to 1 if hardware registers are allowed to be the src. */
|
||||
|
||||
rtx
|
||||
find_last_value (x, pinsn, valid_to)
|
||||
find_last_value (x, pinsn, valid_to, allow_hwreg)
|
||||
rtx x;
|
||||
rtx *pinsn;
|
||||
rtx valid_to;
|
||||
int allow_hwreg;
|
||||
{
|
||||
rtx p;
|
||||
|
||||
@ -767,8 +769,8 @@ find_last_value (x, pinsn, valid_to)
|
||||
if (! modified_between_p (src, PREV_INSN (p), valid_to)
|
||||
/* Reject hard registers because we don't usually want
|
||||
to use them; we'd rather use a pseudo. */
|
||||
&& ! (GET_CODE (src) == REG
|
||||
&& REGNO (src) < FIRST_PSEUDO_REGISTER))
|
||||
&& (! (GET_CODE (src) == REG
|
||||
&& REGNO (src) < FIRST_PSEUDO_REGISTER) || allow_hwreg))
|
||||
{
|
||||
*pinsn = p;
|
||||
return src;
|
||||
|
Loading…
Reference in New Issue
Block a user