diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 77d95970a19..8a9f15acc58 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2002-06-14 Franz Sirl + + * rtl.h (SCHED_GROUP_P): Disallow CODE_LABEL, BARRIER and NOTE. + * sched-deps.c (add_dependence): Likewise. + (group_leader): Likewise. + * sched-rgn.c (init_ready_list): Likewise. + * doc/rtl.texi: Adjust accordingly. + 2002-06-13 Jeffrey Law * gcse.c (delete_null_pointer_checks_1): Inform caller if any diff --git a/gcc/doc/rtl.texi b/gcc/doc/rtl.texi index abeba3c26b8..5894910d30b 100644 --- a/gcc/doc/rtl.texi +++ b/gcc/doc/rtl.texi @@ -614,17 +614,13 @@ anywhere. This does not mean that it is function invariant. Stored in the @code{unchanging} field and printed as @samp{/u}. @findex SCHED_GROUP_P -@cindex @code{insn} and @samp{/i} -@cindex @code{call_insn} and @samp{/i} -@cindex @code{jump_insn} and @samp{/i} -@cindex @code{code_label} and @samp{/i} -@cindex @code{barrier} and @samp{/i} -@cindex @code{note} and @samp{/i} -@cindex @code{in_struct}, in @code{insn}, @code{jump_insn}, @code{call_insn}, @code{code_label}, @code{barrier}, and @code{note} +@cindex @code{insn} and @samp{/s} +@cindex @code{call_insn} and @samp{/s} +@cindex @code{jump_insn} and @samp{/s} +@cindex @code{in_struct}, in @code{insn}, @code{jump_insn} and @code{call_insn} @item SCHED_GROUP_P (@var{x}) -During instruction scheduling, in an @code{insn}, @code{call_insn}, -@code{jump_insn}, @code{code_label}, @code{barrier}, or -@code{note}, indicates that the +During instruction scheduling, in an @code{insn}, @code{call_insn} or +@code{jump_insn}, indicates that the previous insn must be scheduled together with this insn. This is used to ensure that certain groups of instructions will not be split up by the instruction scheduling pass, for example, @code{use} insns before diff --git a/gcc/rtl.h b/gcc/rtl.h index 3842426c3d7..0b7a874ee84 100644 --- a/gcc/rtl.h +++ b/gcc/rtl.h @@ -161,9 +161,8 @@ struct rtx_def and must not be deleted even if its count is zero. 1 in a LABEL_REF if this is a reference to a label outside the current loop. - 1 in an INSN, JUMP_INSN, CALL_INSN, CODE_LABEL, BARRIER, or NOTE if - this insn must be scheduled together with the preceding insn. Valid - only within sched. + 1 in an INSN, JUMP_INSN or CALL_INSN if this insn must be scheduled + together with the preceding insn. Valid only within sched. 1 in an INSN, JUMP_INSN, or CALL_INSN if insn is in a delay slot and from the target of a branch. Valid from reorg until end of compilation; cleared before used. @@ -1118,8 +1117,8 @@ do { \ /* During sched, 1 if RTX is an insn that must be scheduled together with the preceding insn. */ #define SCHED_GROUP_P(RTX) \ - (RTL_FLAG_CHECK6("SCHED_GROUP_P", (RTX), INSN, JUMP_INSN, CALL_INSN, \ - CODE_LABEL, BARRIER, NOTE)->in_struct) + (RTL_FLAG_CHECK3("SCHED_GROUP_P", (RTX), INSN, JUMP_INSN, CALL_INSN \ + )->in_struct) /* For a SET rtx, SET_DEST is the place that is set and SET_SRC is the value it is set to. */ diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c index 985559fc970..a5e9c08b5bf 100644 --- a/gcc/sched-deps.c +++ b/gcc/sched-deps.c @@ -222,8 +222,7 @@ add_dependence (insn, elem, dep_type) setters of the condition codes, so we must skip past notes here. Otherwise, NOTEs are impossible here. */ next = next_nonnote_insn (elem); - if (next && SCHED_GROUP_P (next) - && GET_CODE (next) != CODE_LABEL) + if (next && INSN_P (next) && SCHED_GROUP_P (next)) { /* Notes will never intervene here though, so don't bother checking for them. */ @@ -235,8 +234,8 @@ add_dependence (insn, elem, dep_type) rtx nnext; while ((nnext = next_nonnote_insn (next)) != NULL - && SCHED_GROUP_P (nnext) - && GET_CODE (nnext) != CODE_LABEL) + && INSN_P (nnext) + && SCHED_GROUP_P (nnext)) next = nnext; /* Again, don't depend an insn on itself. */ @@ -448,7 +447,7 @@ group_leader (insn) prev = insn; insn = next_nonnote_insn (insn); } - while (insn && SCHED_GROUP_P (insn) && (GET_CODE (insn) != CODE_LABEL)); + while (insn && INSN_P (insn) && SCHED_GROUP_P (insn)); return prev; } diff --git a/gcc/sched-rgn.c b/gcc/sched-rgn.c index 30b2cf0d8f5..6227645651b 100644 --- a/gcc/sched-rgn.c +++ b/gcc/sched-rgn.c @@ -2033,7 +2033,7 @@ init_ready_list (ready) next = NEXT_INSN (insn); if (INSN_DEP_COUNT (insn) == 0 - && (SCHED_GROUP_P (next) == 0 || ! INSN_P (next))) + && (! INSN_P (next) || SCHED_GROUP_P (next) == 0)) ready_add (ready, insn); if (!(SCHED_GROUP_P (insn))) target_n_insns++; @@ -2079,8 +2079,8 @@ init_ready_list (ready) next = next_nonnote_insn (insn); if (INSN_DEP_COUNT (insn) == 0 && (! next - || SCHED_GROUP_P (next) == 0 - || ! INSN_P (next))) + || ! INSN_P (next) + || SCHED_GROUP_P (next) == 0)) ready_add (ready, insn); } }