*** empty log message ***

From-SVN: r800
This commit is contained in:
Richard Stallman 1992-04-20 01:40:14 +00:00
parent 21163e24aa
commit 6dab9d4109
5 changed files with 96 additions and 101 deletions

View File

@ -1,5 +1,4 @@
EXTRA_PASSES = mips-tfile mips-tdump
EXTRA_PROGRAMS = ld
CCLIBFLAGS = -O -G 0
LIBGCC2_CFLAGS = -O2 $(GCC_CFLAGS) -g1 -G 0
CONFIG2_H = $(srcdir)/config/mips.h

View File

@ -1,5 +1,3 @@
# Use collect2 to link.
EXTRA_PROGRAMS = ld
EXTRA_OBJS = halfpic.o
LIMITS_H =
CONFIG2_H = $(srcdir)/config/mips.h $(srcdir)/config/decrose.h $(srcdir)/halfpic.h

View File

@ -1,6 +1,4 @@
EXTRA_PASSES = mips-tfile mips-tdump
# Use collect2 to link.
EXTRA_PROGRAMS = ld
CCLIBFLAGS = -O -G 0
LIBGCC2_CFLAGS = -O2 $(GCC_CFLAGS) -g1 -G 0
CONFIG2_H = $(srcdir)/config/mips.h

View File

@ -371,101 +371,6 @@ copy_most_rtx (orig, may_share)
return copy;
}
/* Helper functions for instruction scheduling. */
/* Add ELEM wrapped in an INSN_LIST with reg note kind DEP_TYPE to the
LOG_LINKS of INSN, if not already there. DEP_TYPE indicates the type
of dependence that this link represents. */
void
add_dependence (insn, elem, dep_type)
rtx insn;
rtx elem;
enum reg_note dep_type;
{
rtx link, next;
/* Don't depend an insn on itself. */
if (insn == elem)
return;
/* If elem is part of a sequence that must be scheduled together, then
make the dependence point to the last insn of the sequence.
When HAVE_cc0, it is possible for NOTEs to exist between users and
setters of the condition codes, so we must skip past notes here.
Otherwise, NOTEs are impossible here. */
next = NEXT_INSN (elem);
#ifdef HAVE_cc0
while (next && GET_CODE (next) == NOTE)
next = NEXT_INSN (next);
#endif
if (next && SCHED_GROUP_P (next))
{
/* Notes will never intervene here though, so don't bother checking
for them. */
while (next && SCHED_GROUP_P (next))
next = NEXT_INSN (next);
/* Again, don't depend an insn on itself. */
if (insn == next)
return;
/* Make the dependence to NEXT, the last insn of the group, instead
of the original ELEM. */
elem = next;
}
/* Check that we don't already have this dependence. */
for (link = LOG_LINKS (insn); link; link = XEXP (link, 1))
if (XEXP (link, 0) == elem)
{
/* If this is a more restrictive type of dependence than the existing
one, then change the existing dependence to this type. */
if ((int) dep_type < (int) REG_NOTE_KIND (link))
PUT_REG_NOTE_KIND (link, dep_type);
return;
}
/* Might want to check one level of transitivity to save conses. */
link = rtx_alloc (INSN_LIST);
/* Insn dependency, not data dependency. */
PUT_REG_NOTE_KIND (link, dep_type);
XEXP (link, 0) = elem;
XEXP (link, 1) = LOG_LINKS (insn);
LOG_LINKS (insn) = link;
}
/* Remove ELEM wrapped in an INSN_LIST from the LOG_LINKS
of INSN. Abort if not found. */
void
remove_dependence (insn, elem)
rtx insn;
rtx elem;
{
rtx prev, link;
int found = 0;
for (prev = 0, link = LOG_LINKS (insn); link;
prev = link, link = XEXP (link, 1))
{
if (XEXP (link, 0) == elem)
{
if (prev)
XEXP (prev, 1) = XEXP (link, 1);
else
LOG_LINKS (insn) = XEXP (link, 1);
found = 1;
}
}
if (! found)
abort ();
return;
}
/* Subroutines of read_rtx. */
/* Dump code after printing a message. Used when read_rtx finds

View File

@ -213,7 +213,7 @@ static int q_ptr = 0;
static int q_size = 0;
#define NEXT_Q(X) (((X)+1) & (Q_SIZE-1))
#define NEXT_Q_AFTER(X,C) (((X)+C) & (Q_SIZE-1))
/* Forward declarations. */
static void sched_analyze_2 ();
static void schedule_block ();
@ -692,6 +692,101 @@ output_dependence (mem, x)
&& ! MEM_IN_STRUCT_P (mem) && ! rtx_addr_varies_p (mem))));
}
/* Helper functions for instruction scheduling. */
/* Add ELEM wrapped in an INSN_LIST with reg note kind DEP_TYPE to the
LOG_LINKS of INSN, if not already there. DEP_TYPE indicates the type
of dependence that this link represents. */
void
add_dependence (insn, elem, dep_type)
rtx insn;
rtx elem;
enum reg_note dep_type;
{
rtx link, next;
/* Don't depend an insn on itself. */
if (insn == elem)
return;
/* If elem is part of a sequence that must be scheduled together, then
make the dependence point to the last insn of the sequence.
When HAVE_cc0, it is possible for NOTEs to exist between users and
setters of the condition codes, so we must skip past notes here.
Otherwise, NOTEs are impossible here. */
next = NEXT_INSN (elem);
#ifdef HAVE_cc0
while (next && GET_CODE (next) == NOTE)
next = NEXT_INSN (next);
#endif
if (next && SCHED_GROUP_P (next))
{
/* Notes will never intervene here though, so don't bother checking
for them. */
while (NEXT_INSN (next) && SCHED_GROUP_P (NEXT_INSN (next)))
next = NEXT_INSN (next);
/* Again, don't depend an insn on itself. */
if (insn == next)
return;
/* Make the dependence to NEXT, the last insn of the group, instead
of the original ELEM. */
elem = next;
}
/* Check that we don't already have this dependence. */
for (link = LOG_LINKS (insn); link; link = XEXP (link, 1))
if (XEXP (link, 0) == elem)
{
/* If this is a more restrictive type of dependence than the existing
one, then change the existing dependence to this type. */
if ((int) dep_type < (int) REG_NOTE_KIND (link))
PUT_REG_NOTE_KIND (link, dep_type);
return;
}
/* Might want to check one level of transitivity to save conses. */
link = rtx_alloc (INSN_LIST);
/* Insn dependency, not data dependency. */
PUT_REG_NOTE_KIND (link, dep_type);
XEXP (link, 0) = elem;
XEXP (link, 1) = LOG_LINKS (insn);
LOG_LINKS (insn) = link;
}
/* Remove ELEM wrapped in an INSN_LIST from the LOG_LINKS
of INSN. Abort if not found. */
void
remove_dependence (insn, elem)
rtx insn;
rtx elem;
{
rtx prev, link;
int found = 0;
for (prev = 0, link = LOG_LINKS (insn); link;
prev = link, link = XEXP (link, 1))
{
if (XEXP (link, 0) == elem)
{
if (prev)
XEXP (prev, 1) = XEXP (link, 1);
else
LOG_LINKS (insn) = XEXP (link, 1);
found = 1;
}
}
if (! found)
abort ();
return;
}
#ifndef INSN_SCHEDULING
void schedule_insns () {}
#else