diff options
author | Jeff Law <law@gcc.gnu.org> | 2002-05-29 13:55:34 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2002-05-29 13:55:34 -0600 |
commit | e7206fbc5c2615615180bf23d52727994d6b4a63 (patch) | |
tree | 3ca16b30a6b68951a3d1916e374823b5b7964d26 | |
parent | 8dc901ded38b2ad59f56ca82d9d8043d4fa92d18 (diff) | |
download | gcc-e7206fbc5c2615615180bf23d52727994d6b4a63.zip gcc-e7206fbc5c2615615180bf23d52727994d6b4a63.tar.gz gcc-e7206fbc5c2615615180bf23d52727994d6b4a63.tar.bz2 |
Revert this patch:
- * haifa-sched.c (schedule_block): Do not count USE and CLOBBER
- insns against the issue rate.
-
- * sched-deps.c (sched_create_groups_for_libcalls): New function.
- (sched_analyze): Use it.
From-SVN: r54015
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/haifa-sched.c | 5 | ||||
-rw-r--r-- | gcc/sched-deps.c | 56 |
3 files changed, 1 insertions, 71 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8b9cce8..11e769a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -63,17 +63,6 @@ (SUBTARGET_EXTRA_SPECS): Define. (CPP_SPEC): Remove. -2002-05-29 Dale Johannesen <dalej@apple.com> - Michael Matz <matz@kde.org> - David Edelsohn <edesohn@gnu.org> - Jeff Law <law@redhat.com> - - * haifa-sched.c (schedule_block): Do not count USE and CLOBBER - insns against the issue rate. - - * sched-deps.c (sched_create_groups_for_libcalls): New function. - (sched_analyze): Use it. - 2002-05-29 Chris Lattner <sabre@nondot.org> * ssa.c (rename_insn_1): Rename uses of undefined registers to diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index a03b9b3..63a3135 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -2179,10 +2179,7 @@ schedule_block (b, rgn_n_insns) can_issue_more = (*targetm.sched.variable_issue) (sched_dump, sched_verbose, insn, can_issue_more); - /* A naked CLOBBER or USE generates no instruction, so do - not count them against the issue rate. */ - else if (GET_CODE (PATTERN (insn)) != USE - && GET_CODE (PATTERN (insn)) != CLOBBER) + else can_issue_more--; schedule_insn (insn, &ready, clock_var); diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c index 7154635..0afb21b 100644 --- a/gcc/sched-deps.c +++ b/gcc/sched-deps.c @@ -88,7 +88,6 @@ static void flush_pending_lists PARAMS ((struct deps *, rtx, int, int)); static void sched_analyze_1 PARAMS ((struct deps *, rtx, rtx)); static void sched_analyze_2 PARAMS ((struct deps *, rtx, rtx)); static void sched_analyze_insn PARAMS ((struct deps *, rtx, rtx, rtx)); -static void sched_create_groups_for_libcalls PARAMS ((rtx, rtx)); static rtx group_leader PARAMS ((rtx)); static rtx get_condition PARAMS ((rtx)); @@ -1211,57 +1210,6 @@ sched_analyze_insn (deps, x, insn, loop_notes) } } -/* Find any libcall sequences between HEAD and TAIL inclusive; set - SCHED_GROUP_P appropriately for such sequences. */ - -static void -sched_create_groups_for_libcalls (head, tail) - rtx head, tail; -{ - rtx insn; - int tail_seen_p = 0; - - for (insn = head;; insn = NEXT_INSN (insn)) - { - rtx link, end_seq, set, r0, note; - if (INSN_P (insn) && GET_CODE (PATTERN (insn)) == CLOBBER - && (r0 = XEXP (PATTERN (insn), 0), GET_CODE (r0) == REG) - && (link = find_reg_note (insn, REG_LIBCALL, NULL_RTX)) != 0 - && (end_seq = XEXP (link, 0)) != 0 - && INSN_P (end_seq) - && (set = single_set (end_seq)) != 0 - && SET_DEST (set) == r0 && SET_SRC (set) == r0 - && (note = find_reg_note (end_seq, REG_EQUAL, NULL_RTX)) != 0) - { - /* We found a libcall block between insn and end_seq. - The inner insns should be scheduled in a block. */ - rtx inner; - /* Paranoia. */ - if (insn == tail) - tail_seen_p = 1; - /* We don't want to set this flag on the initial clobber, because - the semantic of SCHED_GROUP_P is to make insn be scheduled - together with the previous insn. */ - for (inner = NEXT_INSN (insn); inner; inner = NEXT_INSN (inner)) - { - if (INSN_P (inner)) - set_sched_group_p (inner); - /* Paranoia. */ - if (inner == tail) - tail_seen_p = 1; - if (inner == end_seq) - break; - } - /* We should be able to skip the whole lib-call block. - Remember that one NEXT_INSN is done in the loop-iteration. */ - insn = end_seq; - } - if (insn == tail || tail_seen_p) - break; - } - return; -} - /* Analyze every insn between HEAD and TAIL inclusive, creating LOG_LINKS for every dependency. */ @@ -1409,10 +1357,6 @@ sched_analyze (deps, head, tail) { if (current_sched_info->use_cselib) cselib_finish (); - - if (! reload_completed) - sched_create_groups_for_libcalls (head, tail); - return; } } |