mirror of git://gcc.gnu.org/git/gcc.git
haifa-sched.c: Remove define LINE_NOTE(INSN).
2006-11-29 Tehila Meyzels <tehila@il.ibm.com>
* haifa-sched.c: Remove define LINE_NOTE(INSN).
Remove line_note_head.
Update documentation.
(associate_line_notes_with_blocks): Kill.
(extend_bb): Remove basic block argument, put void instead.
Remove line number handling for each bb.
(save_line_notes): Kill.
(restore_line_notes): Kill.
(sched_init): Remove line_note_head initialization.
Change extend_bb call.
(sched_finish): Remove free of line_note_head.
(add_block): Change extend_bb call.
* sched-ebb.c (schedule_ebb): Remove save_line_notes,
rm_line_notes and restore_line_notes calls.
(schedule_ebbs): Remove rm_redundant_line_notes.
* sched-int.h (struct haifa_insn_data): Remove line_note.
(save_line_notes): Remove declaration.
(restore_line_notes): Remove declaration.
* modulo-sched.c (loop_canon_p): Update debug info printing
by using insn locators instead of line note.
(sms_schedule): Update debug info printing, by using insn
locators instead of line note.
* sched-rgn.c (debug_dependencies): Remove handling of case
n>0 (line number), since it's a dead code.
(schedule_region): Remove save_line_notes and
restore_line_notes calls.
From-SVN: r119328
This commit is contained in:
parent
14502dad06
commit
07c0282832
|
|
@ -1,3 +1,31 @@
|
||||||
|
2006-11-29 Tehila Meyzels <tehila@il.ibm.com>
|
||||||
|
|
||||||
|
* haifa-sched.c: Remove define LINE_NOTE(INSN). Remove line_note_head.
|
||||||
|
Update documentation.
|
||||||
|
(associate_line_notes_with_blocks): Kill.
|
||||||
|
(extend_bb): Remove basic block argument, put void instead.
|
||||||
|
Remove line number handling for each bb.
|
||||||
|
(save_line_notes): Kill.
|
||||||
|
(restore_line_notes): Kill.
|
||||||
|
(sched_init): Remove line_note_head initialization.
|
||||||
|
Change extend_bb call.
|
||||||
|
(sched_finish): Remove free of line_note_head.
|
||||||
|
(add_block): Change extend_bb call.
|
||||||
|
* sched-ebb.c (schedule_ebb): Remove save_line_notes,
|
||||||
|
rm_line_notes and restore_line_notes calls.
|
||||||
|
(schedule_ebbs): Remove rm_redundant_line_notes.
|
||||||
|
* sched-int.h (struct haifa_insn_data): Remove line_note.
|
||||||
|
(save_line_notes): Remove declaration.
|
||||||
|
(restore_line_notes): Remove declaration.
|
||||||
|
* modulo-sched.c (loop_canon_p): Update debug info printing
|
||||||
|
by using insn locators instead of line note.
|
||||||
|
(sms_schedule): Update debug info printing, by using insn
|
||||||
|
locators instead of line note.
|
||||||
|
* sched-rgn.c (debug_dependencies): Remove handling of case
|
||||||
|
n>0 (line number), since it's a dead code.
|
||||||
|
(schedule_region): Remove save_line_notes and
|
||||||
|
restore_line_notes calls.
|
||||||
|
|
||||||
2006-11-29 Joseph Myers <joseph@codesourcery.com>
|
2006-11-29 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
* config/rs6000/predicates.md (gpc_reg_operand): Check
|
* config/rs6000/predicates.md (gpc_reg_operand): Check
|
||||||
|
|
|
||||||
|
|
@ -186,7 +186,6 @@ fix_sched_param (const char *param, const char *val)
|
||||||
|
|
||||||
struct haifa_insn_data *h_i_d;
|
struct haifa_insn_data *h_i_d;
|
||||||
|
|
||||||
#define LINE_NOTE(INSN) (h_i_d[INSN_UID (INSN)].line_note)
|
|
||||||
#define INSN_TICK(INSN) (h_i_d[INSN_UID (INSN)].tick)
|
#define INSN_TICK(INSN) (h_i_d[INSN_UID (INSN)].tick)
|
||||||
#define INTER_TICK(INSN) (h_i_d[INSN_UID (INSN)].inter_tick)
|
#define INTER_TICK(INSN) (h_i_d[INSN_UID (INSN)].inter_tick)
|
||||||
|
|
||||||
|
|
@ -200,10 +199,6 @@ struct haifa_insn_data *h_i_d;
|
||||||
For now, all instructions are equally good. */
|
For now, all instructions are equally good. */
|
||||||
#define ISSUE_POINTS(INSN) 1
|
#define ISSUE_POINTS(INSN) 1
|
||||||
|
|
||||||
/* Vector indexed by basic block number giving the starting line-number
|
|
||||||
for each basic block. */
|
|
||||||
static rtx *line_note_head;
|
|
||||||
|
|
||||||
/* List of important notes we must keep around. This is a pointer to the
|
/* List of important notes we must keep around. This is a pointer to the
|
||||||
last element in the list. */
|
last element in the list. */
|
||||||
static rtx note_list;
|
static rtx note_list;
|
||||||
|
|
@ -509,7 +504,7 @@ static void advance_one_cycle (void);
|
||||||
/* Notes handling mechanism:
|
/* Notes handling mechanism:
|
||||||
=========================
|
=========================
|
||||||
Generally, NOTES are saved before scheduling and restored after scheduling.
|
Generally, NOTES are saved before scheduling and restored after scheduling.
|
||||||
The scheduler distinguishes between three types of notes:
|
The scheduler distinguishes between two types of notes:
|
||||||
|
|
||||||
(1) LOOP_BEGIN, LOOP_END, SETJMP, EHREGION_BEG, EHREGION_END notes:
|
(1) LOOP_BEGIN, LOOP_END, SETJMP, EHREGION_BEG, EHREGION_END notes:
|
||||||
Before scheduling a region, a pointer to the note is added to the insn
|
Before scheduling a region, a pointer to the note is added to the insn
|
||||||
|
|
@ -569,12 +564,11 @@ static void init_before_recovery (void);
|
||||||
static basic_block create_recovery_block (void);
|
static basic_block create_recovery_block (void);
|
||||||
static void create_check_block_twin (rtx, bool);
|
static void create_check_block_twin (rtx, bool);
|
||||||
static void fix_recovery_deps (basic_block);
|
static void fix_recovery_deps (basic_block);
|
||||||
static void associate_line_notes_with_blocks (basic_block);
|
|
||||||
static void change_pattern (rtx, rtx);
|
static void change_pattern (rtx, rtx);
|
||||||
static int speculate_insn (rtx, ds_t, rtx *);
|
static int speculate_insn (rtx, ds_t, rtx *);
|
||||||
static void dump_new_block_header (int, basic_block, rtx, rtx);
|
static void dump_new_block_header (int, basic_block, rtx, rtx);
|
||||||
static void restore_bb_notes (basic_block);
|
static void restore_bb_notes (basic_block);
|
||||||
static void extend_bb (basic_block);
|
static void extend_bb (void);
|
||||||
static void fix_jump_move (rtx);
|
static void fix_jump_move (rtx);
|
||||||
static void move_block_after_check (rtx);
|
static void move_block_after_check (rtx);
|
||||||
static void move_succs (VEC(edge,gc) **, basic_block);
|
static void move_succs (VEC(edge,gc) **, basic_block);
|
||||||
|
|
@ -1321,99 +1315,6 @@ no_real_insns_p (rtx head, rtx tail)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Save line number notes for each insn in block B. HEAD and TAIL are
|
|
||||||
the boundaries of the block in which notes should be processed. */
|
|
||||||
|
|
||||||
void
|
|
||||||
save_line_notes (int b, rtx head, rtx tail)
|
|
||||||
{
|
|
||||||
rtx next_tail;
|
|
||||||
|
|
||||||
/* We must use the true line number for the first insn in the block
|
|
||||||
that was computed and saved at the start of this pass. We can't
|
|
||||||
use the current line number, because scheduling of the previous
|
|
||||||
block may have changed the current line number. */
|
|
||||||
|
|
||||||
rtx line = line_note_head[b];
|
|
||||||
rtx insn;
|
|
||||||
|
|
||||||
next_tail = NEXT_INSN (tail);
|
|
||||||
|
|
||||||
for (insn = head; insn != next_tail; insn = NEXT_INSN (insn))
|
|
||||||
LINE_NOTE (insn) = line;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* After a block was scheduled, insert line notes into the insns list.
|
|
||||||
HEAD and TAIL are the boundaries of the block in which notes should
|
|
||||||
be processed. */
|
|
||||||
|
|
||||||
void
|
|
||||||
restore_line_notes (rtx head, rtx tail)
|
|
||||||
{
|
|
||||||
rtx line, note, prev, new;
|
|
||||||
int added_notes = 0;
|
|
||||||
rtx next_tail, insn;
|
|
||||||
|
|
||||||
head = head;
|
|
||||||
next_tail = NEXT_INSN (tail);
|
|
||||||
|
|
||||||
/* Determine the current line-number. We want to know the current
|
|
||||||
line number of the first insn of the block here, in case it is
|
|
||||||
different from the true line number that was saved earlier. If
|
|
||||||
different, then we need a line number note before the first insn
|
|
||||||
of this block. If it happens to be the same, then we don't want to
|
|
||||||
emit another line number note here. */
|
|
||||||
for (line = head; line; line = PREV_INSN (line))
|
|
||||||
if (NOTE_P (line) && NOTE_LINE_NUMBER (line) > 0)
|
|
||||||
break;
|
|
||||||
|
|
||||||
/* Walk the insns keeping track of the current line-number and inserting
|
|
||||||
the line-number notes as needed. */
|
|
||||||
for (insn = head; insn != next_tail; insn = NEXT_INSN (insn))
|
|
||||||
if (NOTE_P (insn) && NOTE_LINE_NUMBER (insn) > 0)
|
|
||||||
line = insn;
|
|
||||||
/* This used to emit line number notes before every non-deleted note.
|
|
||||||
However, this confuses a debugger, because line notes not separated
|
|
||||||
by real instructions all end up at the same address. I can find no
|
|
||||||
use for line number notes before other notes, so none are emitted. */
|
|
||||||
else if (!NOTE_P (insn)
|
|
||||||
&& INSN_UID (insn) < old_max_uid
|
|
||||||
&& (note = LINE_NOTE (insn)) != 0
|
|
||||||
&& note != line
|
|
||||||
&& (line == 0
|
|
||||||
#ifdef USE_MAPPED_LOCATION
|
|
||||||
|| NOTE_SOURCE_LOCATION (note) != NOTE_SOURCE_LOCATION (line)
|
|
||||||
#else
|
|
||||||
|| NOTE_LINE_NUMBER (note) != NOTE_LINE_NUMBER (line)
|
|
||||||
|| NOTE_SOURCE_FILE (note) != NOTE_SOURCE_FILE (line)
|
|
||||||
#endif
|
|
||||||
))
|
|
||||||
{
|
|
||||||
line = note;
|
|
||||||
prev = PREV_INSN (insn);
|
|
||||||
if (LINE_NOTE (note))
|
|
||||||
{
|
|
||||||
/* Re-use the original line-number note. */
|
|
||||||
LINE_NOTE (note) = 0;
|
|
||||||
PREV_INSN (note) = prev;
|
|
||||||
NEXT_INSN (prev) = note;
|
|
||||||
PREV_INSN (insn) = note;
|
|
||||||
NEXT_INSN (note) = insn;
|
|
||||||
set_block_for_insn (note, BLOCK_FOR_INSN (insn));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
added_notes++;
|
|
||||||
new = emit_note_after (NOTE_LINE_NUMBER (note), prev);
|
|
||||||
#ifndef USE_MAPPED_LOCATION
|
|
||||||
NOTE_SOURCE_FILE (new) = NOTE_SOURCE_FILE (note);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (sched_verbose && added_notes)
|
|
||||||
fprintf (sched_dump, ";; added %d line-number notes\n", added_notes);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Delete notes between HEAD and TAIL and put them in the chain
|
/* Delete notes between HEAD and TAIL and put them in the chain
|
||||||
of notes ended by NOTE_LIST. */
|
of notes ended by NOTE_LIST. */
|
||||||
|
|
||||||
|
|
@ -2722,11 +2623,10 @@ sched_init (void)
|
||||||
|
|
||||||
init_alias_analysis ();
|
init_alias_analysis ();
|
||||||
|
|
||||||
line_note_head = 0;
|
|
||||||
old_last_basic_block = 0;
|
old_last_basic_block = 0;
|
||||||
glat_start = 0;
|
glat_start = 0;
|
||||||
glat_end = 0;
|
glat_end = 0;
|
||||||
extend_bb (0);
|
extend_bb ();
|
||||||
|
|
||||||
if (current_sched_info->flags & USE_GLAT)
|
if (current_sched_info->flags & USE_GLAT)
|
||||||
init_glat ();
|
init_glat ();
|
||||||
|
|
@ -2758,7 +2658,6 @@ sched_finish (void)
|
||||||
dfa_finish ();
|
dfa_finish ();
|
||||||
free_dependency_caches ();
|
free_dependency_caches ();
|
||||||
end_alias_analysis ();
|
end_alias_analysis ();
|
||||||
free (line_note_head);
|
|
||||||
free_glat ();
|
free_glat ();
|
||||||
|
|
||||||
if (targetm.sched.md_finish_global)
|
if (targetm.sched.md_finish_global)
|
||||||
|
|
@ -3902,29 +3801,6 @@ fix_recovery_deps (basic_block rec)
|
||||||
add_jump_dependencies (insn, jump);
|
add_jump_dependencies (insn, jump);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The function saves line notes at the beginning of block B. */
|
|
||||||
static void
|
|
||||||
associate_line_notes_with_blocks (basic_block b)
|
|
||||||
{
|
|
||||||
rtx line;
|
|
||||||
|
|
||||||
for (line = BB_HEAD (b); line; line = PREV_INSN (line))
|
|
||||||
if (NOTE_P (line) && NOTE_LINE_NUMBER (line) > 0)
|
|
||||||
{
|
|
||||||
line_note_head[b->index] = line;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
/* Do a forward search as well, since we won't get to see the first
|
|
||||||
notes in a basic block. */
|
|
||||||
for (line = BB_HEAD (b); line; line = NEXT_INSN (line))
|
|
||||||
{
|
|
||||||
if (INSN_P (line))
|
|
||||||
break;
|
|
||||||
if (NOTE_P (line) && NOTE_LINE_NUMBER (line) > 0)
|
|
||||||
line_note_head[b->index] = line;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Changes pattern of the INSN to NEW_PAT. */
|
/* Changes pattern of the INSN to NEW_PAT. */
|
||||||
static void
|
static void
|
||||||
change_pattern (rtx insn, rtx new_pat)
|
change_pattern (rtx insn, rtx new_pat)
|
||||||
|
|
@ -4087,28 +3963,10 @@ restore_bb_notes (basic_block first)
|
||||||
If BB is NULL, initialize structures for the whole CFG.
|
If BB is NULL, initialize structures for the whole CFG.
|
||||||
Otherwise, initialize them for the just created BB. */
|
Otherwise, initialize them for the just created BB. */
|
||||||
static void
|
static void
|
||||||
extend_bb (basic_block bb)
|
extend_bb (void)
|
||||||
{
|
{
|
||||||
rtx insn;
|
rtx insn;
|
||||||
|
|
||||||
if (write_symbols != NO_DEBUG)
|
|
||||||
{
|
|
||||||
/* Save-line-note-head:
|
|
||||||
Determine the line-number at the start of each basic block.
|
|
||||||
This must be computed and saved now, because after a basic block's
|
|
||||||
predecessor has been scheduled, it is impossible to accurately
|
|
||||||
determine the correct line number for the first insn of the block. */
|
|
||||||
line_note_head = xrecalloc (line_note_head, last_basic_block,
|
|
||||||
old_last_basic_block,
|
|
||||||
sizeof (*line_note_head));
|
|
||||||
|
|
||||||
if (bb)
|
|
||||||
associate_line_notes_with_blocks (bb);
|
|
||||||
else
|
|
||||||
FOR_EACH_BB (bb)
|
|
||||||
associate_line_notes_with_blocks (bb);
|
|
||||||
}
|
|
||||||
|
|
||||||
old_last_basic_block = last_basic_block;
|
old_last_basic_block = last_basic_block;
|
||||||
|
|
||||||
if (current_sched_info->flags & USE_GLAT)
|
if (current_sched_info->flags & USE_GLAT)
|
||||||
|
|
@ -4143,7 +4001,7 @@ add_block (basic_block bb, basic_block ebb)
|
||||||
&& bb->il.rtl->global_live_at_start == 0
|
&& bb->il.rtl->global_live_at_start == 0
|
||||||
&& bb->il.rtl->global_live_at_end == 0);
|
&& bb->il.rtl->global_live_at_end == 0);
|
||||||
|
|
||||||
extend_bb (bb);
|
extend_bb ();
|
||||||
|
|
||||||
glat_start[bb->index] = 0;
|
glat_start[bb->index] = 0;
|
||||||
glat_end[bb->index] = 0;
|
glat_end[bb->index] = 0;
|
||||||
|
|
|
||||||
|
|
@ -818,7 +818,11 @@ loop_canon_p (struct loop *loop)
|
||||||
{
|
{
|
||||||
if (dump_file)
|
if (dump_file)
|
||||||
{
|
{
|
||||||
|
rtx insn = BB_END (loop->header);
|
||||||
|
|
||||||
fprintf (dump_file, "SMS loop many exits ");
|
fprintf (dump_file, "SMS loop many exits ");
|
||||||
|
fprintf (dump_file, " %s %d (file, line)\n",
|
||||||
|
insn_file (insn), insn_line (insn));
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -827,7 +831,11 @@ loop_canon_p (struct loop *loop)
|
||||||
{
|
{
|
||||||
if (dump_file)
|
if (dump_file)
|
||||||
{
|
{
|
||||||
|
rtx insn = BB_END (loop->header);
|
||||||
|
|
||||||
fprintf (dump_file, "SMS loop many BBs. ");
|
fprintf (dump_file, "SMS loop many BBs. ");
|
||||||
|
fprintf (dump_file, " %s %d (file, line)\n",
|
||||||
|
insn_file (insn), insn_line (insn));
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -954,6 +962,8 @@ sms_schedule (void)
|
||||||
{
|
{
|
||||||
if (dump_file)
|
if (dump_file)
|
||||||
{
|
{
|
||||||
|
fprintf (dump_file, " %s %d (file, line)\n",
|
||||||
|
insn_file (tail), insn_line (tail));
|
||||||
fprintf (dump_file, "SMS single-bb-loop\n");
|
fprintf (dump_file, "SMS single-bb-loop\n");
|
||||||
if (profile_info && flag_branch_probabilities)
|
if (profile_info && flag_branch_probabilities)
|
||||||
{
|
{
|
||||||
|
|
@ -1043,6 +1053,8 @@ sms_schedule (void)
|
||||||
|
|
||||||
if (dump_file)
|
if (dump_file)
|
||||||
{
|
{
|
||||||
|
fprintf (dump_file, " %s %d (file, line)\n",
|
||||||
|
insn_file (tail), insn_line (tail));
|
||||||
fprintf (dump_file, "SMS single-bb-loop\n");
|
fprintf (dump_file, "SMS single-bb-loop\n");
|
||||||
if (profile_info && flag_branch_probabilities)
|
if (profile_info && flag_branch_probabilities)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -479,11 +479,6 @@ schedule_ebb (rtx head, rtx tail)
|
||||||
current_sched_info->prev_head = PREV_INSN (head);
|
current_sched_info->prev_head = PREV_INSN (head);
|
||||||
current_sched_info->next_tail = NEXT_INSN (tail);
|
current_sched_info->next_tail = NEXT_INSN (tail);
|
||||||
|
|
||||||
if (write_symbols != NO_DEBUG)
|
|
||||||
{
|
|
||||||
save_line_notes (first_bb->index, head, tail);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* rm_other_notes only removes notes which are _inside_ the
|
/* rm_other_notes only removes notes which are _inside_ the
|
||||||
block---that is, it won't remove notes before the first real insn
|
block---that is, it won't remove notes before the first real insn
|
||||||
or after the last real insn of the block. So if the first insn
|
or after the last real insn of the block. So if the first insn
|
||||||
|
|
@ -519,9 +514,6 @@ schedule_ebb (rtx head, rtx tail)
|
||||||
head = current_sched_info->head;
|
head = current_sched_info->head;
|
||||||
tail = current_sched_info->tail;
|
tail = current_sched_info->tail;
|
||||||
|
|
||||||
if (write_symbols != NO_DEBUG)
|
|
||||||
restore_line_notes (head, tail);
|
|
||||||
|
|
||||||
if (EDGE_COUNT (last_bb->preds) == 0)
|
if (EDGE_COUNT (last_bb->preds) == 0)
|
||||||
/* LAST_BB is unreachable. */
|
/* LAST_BB is unreachable. */
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -270,11 +270,7 @@ struct haifa_insn_data
|
||||||
/* A list of scheduled producers of the instruction. Links are being moved
|
/* A list of scheduled producers of the instruction. Links are being moved
|
||||||
from LOG_LINKS to RESOLVED_DEPS during scheduling. */
|
from LOG_LINKS to RESOLVED_DEPS during scheduling. */
|
||||||
rtx resolved_deps;
|
rtx resolved_deps;
|
||||||
|
|
||||||
/* The line number note in effect for each insn. For line number
|
|
||||||
notes, this indicates whether the note may be reused. */
|
|
||||||
rtx line_note;
|
|
||||||
|
|
||||||
/* Logical uid gives the original ordering of the insns. */
|
/* Logical uid gives the original ordering of the insns. */
|
||||||
int luid;
|
int luid;
|
||||||
|
|
||||||
|
|
@ -634,8 +630,6 @@ extern int haifa_classify_insn (rtx);
|
||||||
extern void get_ebb_head_tail (basic_block, basic_block, rtx *, rtx *);
|
extern void get_ebb_head_tail (basic_block, basic_block, rtx *, rtx *);
|
||||||
extern int no_real_insns_p (rtx, rtx);
|
extern int no_real_insns_p (rtx, rtx);
|
||||||
|
|
||||||
extern void save_line_notes (int, rtx, rtx);
|
|
||||||
extern void restore_line_notes (rtx, rtx);
|
|
||||||
extern void rm_other_notes (rtx, rtx);
|
extern void rm_other_notes (rtx, rtx);
|
||||||
|
|
||||||
extern int insn_cost (rtx, rtx, rtx);
|
extern int insn_cost (rtx, rtx, rtx);
|
||||||
|
|
|
||||||
|
|
@ -2584,13 +2584,6 @@ debug_dependencies (void)
|
||||||
n = NOTE_LINE_NUMBER (insn);
|
n = NOTE_LINE_NUMBER (insn);
|
||||||
if (n < 0)
|
if (n < 0)
|
||||||
fprintf (sched_dump, "%s\n", GET_NOTE_INSN_NAME (n));
|
fprintf (sched_dump, "%s\n", GET_NOTE_INSN_NAME (n));
|
||||||
else
|
|
||||||
{
|
|
||||||
expanded_location xloc;
|
|
||||||
NOTE_EXPANDED_LOCATION (xloc, insn);
|
|
||||||
fprintf (sched_dump, "line %d, file %s\n",
|
|
||||||
xloc.line, xloc.file);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
fprintf (sched_dump, " {%s}\n", GET_RTX_NAME (GET_CODE (insn)));
|
fprintf (sched_dump, " {%s}\n", GET_RTX_NAME (GET_CODE (insn)));
|
||||||
|
|
@ -2768,7 +2761,6 @@ schedule_region (int rgn)
|
||||||
{
|
{
|
||||||
basic_block first_bb, last_bb, curr_bb;
|
basic_block first_bb, last_bb, curr_bb;
|
||||||
rtx head, tail;
|
rtx head, tail;
|
||||||
int b = BB_TO_BLOCK (bb);
|
|
||||||
|
|
||||||
first_bb = EBB_FIRST_BB (bb);
|
first_bb = EBB_FIRST_BB (bb);
|
||||||
last_bb = EBB_LAST_BB (bb);
|
last_bb = EBB_LAST_BB (bb);
|
||||||
|
|
@ -2784,10 +2776,6 @@ schedule_region (int rgn)
|
||||||
current_sched_info->prev_head = PREV_INSN (head);
|
current_sched_info->prev_head = PREV_INSN (head);
|
||||||
current_sched_info->next_tail = NEXT_INSN (tail);
|
current_sched_info->next_tail = NEXT_INSN (tail);
|
||||||
|
|
||||||
if (write_symbols != NO_DEBUG)
|
|
||||||
{
|
|
||||||
save_line_notes (b, head, tail);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* rm_other_notes only removes notes which are _inside_ the
|
/* rm_other_notes only removes notes which are _inside_ the
|
||||||
block---that is, it won't remove notes before the first real insn
|
block---that is, it won't remove notes before the first real insn
|
||||||
|
|
@ -2838,17 +2826,6 @@ schedule_region (int rgn)
|
||||||
/* Sanity check: verify that all region insns were scheduled. */
|
/* Sanity check: verify that all region insns were scheduled. */
|
||||||
gcc_assert (sched_rgn_n_insns == rgn_n_insns);
|
gcc_assert (sched_rgn_n_insns == rgn_n_insns);
|
||||||
|
|
||||||
/* Restore line notes. */
|
|
||||||
if (write_symbols != NO_DEBUG)
|
|
||||||
{
|
|
||||||
for (bb = 0; bb < current_nr_blocks; bb++)
|
|
||||||
{
|
|
||||||
rtx head, tail;
|
|
||||||
|
|
||||||
get_ebb_head_tail (EBB_FIRST_BB (bb), EBB_LAST_BB (bb), &head, &tail);
|
|
||||||
restore_line_notes (head, tail);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Done with this region. */
|
/* Done with this region. */
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue