Tue Jun 4 19:29:42 CEST 2002 Jan Hubicka <jh@suse.cz>
* cfglayout.c (duplicate_insn_chain): Kill NOTE_INSN_RANGE notes. * final.c (final_scan_insn): Likewise. * ggc-common.c (ggc_mark_rtx_children_1): Likewise; use NOTE_EXPECTED_VALUE instead of NOTE_RANGE. * haifa-sched.c (unlink_other_notes): Likeewise. (reemit_notes): Likewise. * print-rtl.c (print_rtx): Likewise. * sched-deps (sched-analyze): Likewise. * rtl.c (note_insn_name): Likewise. * rtl.h (NOTE_RANGE_INFO, NOTE_LIVE_INFO): Kill. (enum insn_note): Kill NOTE_INSN_RANGE_*, NOTE_INSN_LIVE. (RANGE_*): Kill. From-SVN: r54250
This commit is contained in:
parent
a5d1f75b65
commit
63f4a88e28
@ -1,3 +1,18 @@
|
||||
Tue Jun 4 19:29:42 CEST 2002 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* cfglayout.c (duplicate_insn_chain): Kill NOTE_INSN_RANGE notes.
|
||||
* final.c (final_scan_insn): Likewise.
|
||||
* ggc-common.c (ggc_mark_rtx_children_1): Likewise; use
|
||||
NOTE_EXPECTED_VALUE instead of NOTE_RANGE.
|
||||
* haifa-sched.c (unlink_other_notes): Likeewise.
|
||||
(reemit_notes): Likewise.
|
||||
* print-rtl.c (print_rtx): Likewise.
|
||||
* sched-deps (sched-analyze): Likewise.
|
||||
* rtl.c (note_insn_name): Likewise.
|
||||
* rtl.h (NOTE_RANGE_INFO, NOTE_LIVE_INFO): Kill.
|
||||
(enum insn_note): Kill NOTE_INSN_RANGE_*, NOTE_INSN_LIVE.
|
||||
(RANGE_*): Kill.
|
||||
|
||||
2002-06-04 Jason Thorpe <thorpej@wasabisystems.com>
|
||||
|
||||
* varasm.c (mark_constants): Handle RTX format 'B'.
|
||||
|
@ -779,8 +779,6 @@ duplicate_insn_chain (from, to)
|
||||
reordering is in the progress. */
|
||||
case NOTE_INSN_EH_REGION_BEG:
|
||||
case NOTE_INSN_EH_REGION_END:
|
||||
case NOTE_INSN_RANGE_BEG:
|
||||
case NOTE_INSN_RANGE_END:
|
||||
/* Should never exist at BB duplication time. */
|
||||
abort ();
|
||||
break;
|
||||
|
@ -1995,9 +1995,6 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
|
||||
case NOTE_INSN_LOOP_VTOP:
|
||||
case NOTE_INSN_FUNCTION_END:
|
||||
case NOTE_INSN_REPEATED_LINE_NUMBER:
|
||||
case NOTE_INSN_RANGE_BEG:
|
||||
case NOTE_INSN_RANGE_END:
|
||||
case NOTE_INSN_LIVE:
|
||||
case NOTE_INSN_EXPECTED_VALUE:
|
||||
break;
|
||||
|
||||
|
@ -215,11 +215,8 @@ ggc_mark_rtx_children_1 (r)
|
||||
case NOTE:
|
||||
switch (NOTE_LINE_NUMBER (r))
|
||||
{
|
||||
case NOTE_INSN_RANGE_BEG:
|
||||
case NOTE_INSN_RANGE_END:
|
||||
case NOTE_INSN_LIVE:
|
||||
case NOTE_INSN_EXPECTED_VALUE:
|
||||
ggc_mark_rtx (NOTE_RANGE_INFO (r));
|
||||
ggc_mark_rtx (NOTE_EXPECTED_VALUE (r));
|
||||
break;
|
||||
|
||||
case NOTE_INSN_BLOCK_BEG:
|
||||
|
@ -1233,8 +1233,6 @@ unlink_other_notes (insn, tail)
|
||||
/* See sched_analyze to see how these are handled. */
|
||||
if (NOTE_LINE_NUMBER (insn) != NOTE_INSN_LOOP_BEG
|
||||
&& NOTE_LINE_NUMBER (insn) != NOTE_INSN_LOOP_END
|
||||
&& NOTE_LINE_NUMBER (insn) != NOTE_INSN_RANGE_BEG
|
||||
&& NOTE_LINE_NUMBER (insn) != NOTE_INSN_RANGE_END
|
||||
&& NOTE_LINE_NUMBER (insn) != NOTE_INSN_EH_REGION_BEG
|
||||
&& NOTE_LINE_NUMBER (insn) != NOTE_INSN_EH_REGION_END)
|
||||
{
|
||||
@ -1726,23 +1724,12 @@ reemit_notes (insn, last)
|
||||
{
|
||||
enum insn_note note_type = INTVAL (XEXP (note, 0));
|
||||
|
||||
if (note_type == NOTE_INSN_RANGE_BEG
|
||||
|| note_type == NOTE_INSN_RANGE_END)
|
||||
{
|
||||
last = emit_note_before (note_type, last);
|
||||
remove_note (insn, note);
|
||||
note = XEXP (note, 1);
|
||||
NOTE_RANGE_INFO (last) = XEXP (note, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
last = emit_note_before (note_type, last);
|
||||
remove_note (insn, note);
|
||||
note = XEXP (note, 1);
|
||||
if (note_type == NOTE_INSN_EH_REGION_BEG
|
||||
|| note_type == NOTE_INSN_EH_REGION_END)
|
||||
NOTE_EH_HANDLER (last) = INTVAL (XEXP (note, 0));
|
||||
}
|
||||
last = emit_note_before (note_type, last);
|
||||
remove_note (insn, note);
|
||||
note = XEXP (note, 1);
|
||||
if (note_type == NOTE_INSN_EH_REGION_BEG
|
||||
|| note_type == NOTE_INSN_EH_REGION_END)
|
||||
NOTE_EH_HANDLER (last) = INTVAL (XEXP (note, 0));
|
||||
remove_note (insn, note);
|
||||
}
|
||||
}
|
||||
|
@ -251,16 +251,6 @@ print_rtx (in_rtx)
|
||||
sawclose = 1;
|
||||
break;
|
||||
|
||||
case NOTE_INSN_RANGE_BEG:
|
||||
case NOTE_INSN_RANGE_END:
|
||||
case NOTE_INSN_LIVE:
|
||||
indent += 2;
|
||||
if (!sawclose)
|
||||
fprintf (outfile, " ");
|
||||
print_rtx (NOTE_RANGE_INFO (in_rtx));
|
||||
indent -= 2;
|
||||
break;
|
||||
|
||||
case NOTE_INSN_BASIC_BLOCK:
|
||||
{
|
||||
basic_block bb = NOTE_BASIC_BLOCK (in_rtx);
|
||||
|
@ -214,8 +214,7 @@ const char * const note_insn_name[NOTE_INSN_MAX - NOTE_INSN_BIAS] =
|
||||
"NOTE_INSN_PROLOGUE_END", "NOTE_INSN_EPILOGUE_BEG",
|
||||
"NOTE_INSN_DELETED_LABEL", "NOTE_INSN_FUNCTION_BEG",
|
||||
"NOTE_INSN_EH_REGION_BEG", "NOTE_INSN_EH_REGION_END",
|
||||
"NOTE_INSN_REPEATED_LINE_NUMBER", "NOTE_INSN_RANGE_BEG",
|
||||
"NOTE_INSN_RANGE_END", "NOTE_INSN_LIVE",
|
||||
"NOTE_INSN_REPEATED_LINE_NUMBER",
|
||||
"NOTE_INSN_BASIC_BLOCK", "NOTE_INSN_EXPECTED_VALUE",
|
||||
"NOTE_INSN_PREDICTION"
|
||||
};
|
||||
|
107
gcc/rtl.h
107
gcc/rtl.h
@ -754,14 +754,11 @@ extern const char * const reg_note_name[];
|
||||
line is in. We use the same field to record block numbers temporarily in
|
||||
NOTE_INSN_BLOCK_BEG and NOTE_INSN_BLOCK_END notes. (We avoid lots of casts
|
||||
between ints and pointers if we use a different macro for the block number.)
|
||||
The NOTE_INSN_RANGE_{START,END} and NOTE_INSN_LIVE notes record their
|
||||
information as an rtx in the field. */
|
||||
*/
|
||||
|
||||
#define NOTE_SOURCE_FILE(INSN) XCSTR (INSN, 4, NOTE)
|
||||
#define NOTE_BLOCK(INSN) XCTREE (INSN, 4, NOTE)
|
||||
#define NOTE_EH_HANDLER(INSN) XCINT (INSN, 4, NOTE)
|
||||
#define NOTE_RANGE_INFO(INSN) XCEXP (INSN, 4, NOTE)
|
||||
#define NOTE_LIVE_INFO(INSN) XCEXP (INSN, 4, NOTE)
|
||||
#define NOTE_BASIC_BLOCK(INSN) XCBBDEF (INSN, 4, NOTE)
|
||||
#define NOTE_EXPECTED_VALUE(INSN) XCEXP (INSN, 4, NOTE)
|
||||
#define NOTE_PREDICTION(INSN) XCINT (INSN, 4, NOTE)
|
||||
@ -853,14 +850,6 @@ enum insn_note
|
||||
the line containing the inline call from being counted twice in gcov. */
|
||||
NOTE_INSN_REPEATED_LINE_NUMBER,
|
||||
|
||||
/* Start/end of a live range region, where pseudos allocated on the stack
|
||||
can be allocated to temporary registers. Uses NOTE_RANGE_INFO. */
|
||||
NOTE_INSN_RANGE_BEG,
|
||||
NOTE_INSN_RANGE_END,
|
||||
|
||||
/* Record which registers are currently live. Uses NOTE_LIVE_INFO. */
|
||||
NOTE_INSN_LIVE,
|
||||
|
||||
/* Record the struct for the following basic block. Uses NOTE_BASIC_BLOCK. */
|
||||
NOTE_INSN_BASIC_BLOCK,
|
||||
|
||||
@ -1261,100 +1250,6 @@ do { \
|
||||
#define USE_STORE_PRE_DECREMENT(MODE) HAVE_PRE_DECREMENT
|
||||
#endif
|
||||
|
||||
|
||||
/* Accessors for RANGE_INFO. */
|
||||
/* For RANGE_{START,END} notes return the RANGE_START note. */
|
||||
#define RANGE_INFO_NOTE_START(INSN) XCEXP (INSN, 0, RANGE_INFO)
|
||||
|
||||
/* For RANGE_{START,END} notes return the RANGE_START note. */
|
||||
#define RANGE_INFO_NOTE_END(INSN) XCEXP (INSN, 1, RANGE_INFO)
|
||||
|
||||
/* For RANGE_{START,END} notes, return the vector containing the registers used
|
||||
in the range. */
|
||||
#define RANGE_INFO_REGS(INSN) XCVEC (INSN, 2, RANGE_INFO)
|
||||
#define RANGE_INFO_REGS_REG(INSN, N) XCVECEXP (INSN, 2, N, RANGE_INFO)
|
||||
#define RANGE_INFO_NUM_REGS(INSN) XCVECLEN (INSN, 2, RANGE_INFO)
|
||||
|
||||
/* For RANGE_{START,END} notes, the number of calls within the range. */
|
||||
#define RANGE_INFO_NCALLS(INSN) XCINT (INSN, 3, RANGE_INFO)
|
||||
|
||||
/* For RANGE_{START,END} notes, the number of insns within the range. */
|
||||
#define RANGE_INFO_NINSNS(INSN) XCINT (INSN, 4, RANGE_INFO)
|
||||
|
||||
/* For RANGE_{START,END} notes, a unique # to identify this range. */
|
||||
#define RANGE_INFO_UNIQUE(INSN) XCINT (INSN, 5, RANGE_INFO)
|
||||
|
||||
/* For RANGE_{START,END} notes, the basic block # the range starts with. */
|
||||
#define RANGE_INFO_BB_START(INSN) XCINT (INSN, 6, RANGE_INFO)
|
||||
|
||||
/* For RANGE_{START,END} notes, the basic block # the range ends with. */
|
||||
#define RANGE_INFO_BB_END(INSN) XCINT (INSN, 7, RANGE_INFO)
|
||||
|
||||
/* For RANGE_{START,END} notes, the loop depth the range is in. */
|
||||
#define RANGE_INFO_LOOP_DEPTH(INSN) XCINT (INSN, 8, RANGE_INFO)
|
||||
|
||||
/* For RANGE_{START,END} notes, the bitmap of live registers at the start
|
||||
of the range. */
|
||||
#define RANGE_INFO_LIVE_START(INSN) XCBITMAP (INSN, 9, RANGE_INFO)
|
||||
|
||||
/* For RANGE_{START,END} notes, the bitmap of live registers at the end
|
||||
of the range. */
|
||||
#define RANGE_INFO_LIVE_END(INSN) XCBITMAP (INSN, 10, RANGE_INFO)
|
||||
|
||||
/* For RANGE_START notes, the marker # of the start of the range. */
|
||||
#define RANGE_INFO_MARKER_START(INSN) XCINT (INSN, 11, RANGE_INFO)
|
||||
|
||||
/* For RANGE_START notes, the marker # of the end of the range. */
|
||||
#define RANGE_INFO_MARKER_END(INSN) XCINT (INSN, 12, RANGE_INFO)
|
||||
|
||||
/* Original pseudo register # for a live range note. */
|
||||
#define RANGE_REG_PSEUDO(INSN,N) XCINT (XCVECEXP (INSN, 2, N, RANGE_INFO), 0, REG)
|
||||
|
||||
/* Pseudo register # original register is copied into or -1. */
|
||||
#define RANGE_REG_COPY(INSN,N) XCINT (XCVECEXP (INSN, 2, N, RANGE_INFO), 1, REG)
|
||||
|
||||
/* How many times a register in a live range note was referenced. */
|
||||
#define RANGE_REG_REFS(INSN,N) XINT (XCVECEXP (INSN, 2, N, RANGE_INFO), 2)
|
||||
|
||||
/* How many times a register in a live range note was set. */
|
||||
#define RANGE_REG_SETS(INSN,N) XINT (XCVECEXP (INSN, 2, N, RANGE_INFO), 3)
|
||||
|
||||
/* How many times a register in a live range note died. */
|
||||
#define RANGE_REG_DEATHS(INSN,N) XINT (XCVECEXP (INSN, 2, N, RANGE_INFO), 4)
|
||||
|
||||
/* Whether the original value is needed to be copied into the range register at
|
||||
the start of the range. */
|
||||
#define RANGE_REG_COPY_FLAGS(INSN,N) XINT (XCVECEXP (INSN, 2, N, RANGE_INFO), 5)
|
||||
|
||||
/* # of insns the register copy is live over. */
|
||||
#define RANGE_REG_LIVE_LENGTH(INSN,N) XINT (XCVECEXP (INSN, 2, N, RANGE_INFO), 6)
|
||||
|
||||
/* # of calls the register copy is live over. */
|
||||
#define RANGE_REG_N_CALLS(INSN,N) XINT (XCVECEXP (INSN, 2, N, RANGE_INFO), 7)
|
||||
|
||||
/* DECL_NODE pointer of the declaration if the register is a user defined
|
||||
variable. */
|
||||
#define RANGE_REG_SYMBOL_NODE(INSN,N) XTREE (XCVECEXP (INSN, 2, N, RANGE_INFO), 8)
|
||||
|
||||
/* BLOCK_NODE pointer to the block the variable is declared in if the
|
||||
register is a user defined variable. */
|
||||
#define RANGE_REG_BLOCK_NODE(INSN,N) XTREE (XCVECEXP (INSN, 2, N, RANGE_INFO), 9)
|
||||
|
||||
/* EXPR_LIST of the distinct ranges a variable is in. */
|
||||
#define RANGE_VAR_LIST(INSN) (XEXP (INSN, 0))
|
||||
|
||||
/* Block a variable is declared in. */
|
||||
#define RANGE_VAR_BLOCK(INSN) (XTREE (INSN, 1))
|
||||
|
||||
/* # of distinct ranges a variable is in. */
|
||||
#define RANGE_VAR_NUM(INSN) (XINT (INSN, 2))
|
||||
|
||||
/* For a NOTE_INSN_LIVE note, the registers which are currently live. */
|
||||
#define RANGE_LIVE_BITMAP(INSN) (XBITMAP (INSN, 0))
|
||||
|
||||
/* For a NOTE_INSN_LIVE note, the original basic block number. */
|
||||
#define RANGE_LIVE_ORIG_BLOCK(INSN) (XINT (INSN, 1))
|
||||
|
||||
/* Determine if the insn is a PHI node. */
|
||||
#define PHI_NODE_P(X) \
|
||||
((X) && GET_CODE (X) == INSN \
|
||||
|
@ -1315,17 +1315,7 @@ sched_analyze (deps, head, tail)
|
||||
/* See comments on reemit_notes as to why we do this.
|
||||
??? Actually, the reemit_notes just say what is done, not why. */
|
||||
|
||||
else if (GET_CODE (insn) == NOTE
|
||||
&& (NOTE_LINE_NUMBER (insn) == NOTE_INSN_RANGE_BEG
|
||||
|| NOTE_LINE_NUMBER (insn) == NOTE_INSN_RANGE_END))
|
||||
{
|
||||
loop_notes = alloc_EXPR_LIST (REG_SAVE_NOTE, NOTE_RANGE_INFO (insn),
|
||||
loop_notes);
|
||||
loop_notes = alloc_EXPR_LIST (REG_SAVE_NOTE,
|
||||
GEN_INT (NOTE_LINE_NUMBER (insn)),
|
||||
loop_notes);
|
||||
}
|
||||
else if (GET_CODE (insn) == NOTE
|
||||
if (GET_CODE (insn) == NOTE
|
||||
&& (NOTE_LINE_NUMBER (insn) == NOTE_INSN_LOOP_BEG
|
||||
|| NOTE_LINE_NUMBER (insn) == NOTE_INSN_LOOP_END
|
||||
|| NOTE_LINE_NUMBER (insn) == NOTE_INSN_EH_REGION_BEG
|
||||
|
Loading…
x
Reference in New Issue
Block a user