diff options
author | Maxim Kuvyrkov <mkuvyrkov@ispras.ru> | 2006-03-23 18:23:53 +0000 |
---|---|---|
committer | Maxim Kuvyrkov <mkuvyrkov@gcc.gnu.org> | 2006-03-23 18:23:53 +0000 |
commit | a57aee2ab63245bf7678a0cb18997ceb78da8ffc (patch) | |
tree | cba1bf3ad44f7516e9b9ac11a9cbb19a5bd336b2 /gcc/haifa-sched.c | |
parent | e584065d68f543b9c8dcc4fde3b82caab9dca73e (diff) | |
download | gcc-a57aee2ab63245bf7678a0cb18997ceb78da8ffc.zip gcc-a57aee2ab63245bf7678a0cb18997ceb78da8ffc.tar.gz gcc-a57aee2ab63245bf7678a0cb18997ceb78da8ffc.tar.bz2 |
haifa-sched.c (choose_ready): Fix type of the local variable.
2006-03-23 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
* haifa-sched.c (choose_ready): Fix type of the local variable.
Move local variables. Add comment.
(check_reg_live): Change signature. Make callable from debugger.
* sched-int.h (check_reg_live): Update signature.
* sched-ebb.c (check_reg_live): Update parameters.
* sched-rgn.c (check_reg_live): Ditto.
(region_head_or_leaf_p): Check pointer before dereferencing.
* config/ia64/ia64.c (ia64_set_sched_flags): Disable data speculation
before reload on optimization levels below 1.
From-SVN: r112328
Diffstat (limited to 'gcc/haifa-sched.c')
-rw-r--r-- | gcc/haifa-sched.c | 42 |
1 files changed, 33 insertions, 9 deletions
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index 84311b1..56abcda 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -2153,11 +2153,11 @@ choose_ready (struct ready_list *ready) && spec_info->flags & (PREFER_NON_DATA_SPEC | PREFER_NON_CONTROL_SPEC)) { - rtx x; - int s; - for (i = 0, n = ready->n_ready; i < n; i++) { + rtx x; + ds_t s; + x = ready_element (ready, i); s = TODO_SPEC (x); @@ -2185,6 +2185,8 @@ choose_ready (struct ready_list *ready) || (targetm.sched.first_cycle_multipass_dfa_lookahead_guard_spec && !targetm.sched.first_cycle_multipass_dfa_lookahead_guard_spec (insn))) + /* Discard speculative instruction that stands first in the ready + list. */ { change_queue_index (insn, 1); return 0; @@ -4625,9 +4627,12 @@ check_sched_flags (void) gcc_assert (f & USE_GLAT); } -/* Checks global_live_at_{start, end} regsets. */ +/* Check global_live_at_{start, end} regsets. + If FATAL_P is TRUE, then abort execution at the first failure. + Overwise, print diagnostics to STDERR (this mode is for calling + from debugger). */ void -check_reg_live (void) +check_reg_live (bool fatal_p) { basic_block bb; @@ -4638,11 +4643,30 @@ check_reg_live (void) i = bb->index; if (glat_start[i]) - gcc_assert (bitmap_equal_p (bb->il.rtl->global_live_at_start, - glat_start[i])); + { + bool b = bitmap_equal_p (bb->il.rtl->global_live_at_start, + glat_start[i]); + + if (!b) + { + gcc_assert (!fatal_p); + + fprintf (stderr, ";; check_reg_live_at_start (%d) failed.\n", i); + } + } + if (glat_end[i]) - gcc_assert (bitmap_equal_p (bb->il.rtl->global_live_at_end, - glat_end[i])); + { + bool b = bitmap_equal_p (bb->il.rtl->global_live_at_end, + glat_end[i]); + + if (!b) + { + gcc_assert (!fatal_p); + + fprintf (stderr, ";; check_reg_live_at_end (%d) failed.\n", i); + } + } } } #endif /* ENABLE_CHECKING */ |