diff options
author | mkuvyrkov <mkuvyrkov@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-03-28 17:33:41 +0000 |
---|---|---|
committer | mkuvyrkov <mkuvyrkov@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-03-28 17:33:41 +0000 |
commit | b2814640b77ff0aa10d5060e03dffd141891e70f (patch) | |
tree | a1d6247fcff33a23c3d09e0f5da5f44d6739551d /gcc/haifa-sched.c | |
parent | c348f27f02731704ee3e33e5d541060f865a75b7 (diff) | |
download | gcc-b2814640b77ff0aa10d5060e03dffd141891e70f.tar.gz |
2006-03-28 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
Revert my 2006-03-27 patches.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@112456 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/haifa-sched.c')
-rw-r--r-- | gcc/haifa-sched.c | 48 |
1 files changed, 13 insertions, 35 deletions
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index f81344d0d2e..56abcda64e2 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -1,7 +1,6 @@ /* Instruction scheduling pass. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. + 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) Enhanced by, and currently maintained by, Jim Wilson (wilson@cygnus.com) @@ -3056,6 +3055,16 @@ try_ready (rtx next) || !RECOVERY_BLOCK (next) || RECOVERY_BLOCK (next) == EXIT_BLOCK_PTR); + if (*ts == 0 && ORIG_PAT (next) && !RECOVERY_BLOCK (next)) + /* We should change pattern of every previously speculative + instruction - and we determine if NEXT was speculative by using + ORIG_PAT field. Except one case - simple checks have ORIG_PAT + pat too, hence we also check for the RECOVERY_BLOCK. */ + { + change_pattern (next, ORIG_PAT (next)); + ORIG_PAT (next) = 0; + } + if (*ts & HARD_DEP) { /* We can't assert (QUEUE_INDEX (next) == QUEUE_NOWHERE) here because @@ -3066,15 +3075,6 @@ try_ready (rtx next) change_queue_index (next, QUEUE_NOWHERE); return -1; } - else if (!(*ts & BEGIN_SPEC) && ORIG_PAT (next) && !RECOVERY_BLOCK (next)) - /* We should change pattern of every previously speculative - instruction - and we determine if NEXT was speculative by using - ORIG_PAT field. Except one case - simple checks have ORIG_PAT - pat too, hence we also check for the RECOVERY_BLOCK. */ - { - change_pattern (next, ORIG_PAT (next)); - ORIG_PAT (next) = 0; - } if (sched_verbose >= 2) { @@ -3312,30 +3312,8 @@ process_insn_depend_be_in_spec (rtx link, rtx twin, ds_t fs) ds = DEP_STATUS (link); - if (/* If we want to create speculative dep. */ - fs - /* And we can do that because this is a true dep. */ - && (ds & DEP_TYPES) == DEP_TRUE) - { - gcc_assert (!(ds & BE_IN_SPEC)); - - if (/* If this dep can be overcomed with 'begin speculation'. */ - ds & BEGIN_SPEC) - /* Then we have a choice: keep the dep 'begin speculative' - or transform it into 'be in speculative'. */ - { - if (/* In try_ready we assert that if insn once became ready - it can be removed from the ready (or queue) list only - due to backend decision. Hence we can't let the - probability of the speculative dep to decrease. */ - dep_weak (ds) <= dep_weak (fs)) - /* Transform it to be in speculative. */ - ds = (ds & ~BEGIN_SPEC) | fs; - } - else - /* Mark the dep as 'be in speculative'. */ - ds |= fs; - } + if (fs && (ds & DEP_TYPES) == DEP_TRUE) + ds = (ds & ~BEGIN_SPEC) | fs; add_back_forw_dep (consumer, twin, REG_NOTE_KIND (link), ds); } |