rtl.h (enum insn_note): New enumeration.

* rtl.h (enum insn_note): New enumeration.  Subsume
        NOTE_INSN_DELETED and friends.
        (GET_NOTE_INSN_NAME): Adjust index by NOTE_INSN_BIAS.
        * rtl.c (note_insn_name): Tweek string order.

From-SVN: r33187
This commit is contained in:
Richard Henderson 2000-04-16 13:23:02 -07:00 committed by Richard Henderson
parent aa95639ea8
commit d636c18c54
3 changed files with 83 additions and 49 deletions

View File

@ -1,3 +1,10 @@
2000-04-16 Richard Henderson <rth@cygnus.com>
* rtl.h (enum insn_note): New enumeration. Subsume
NOTE_INSN_DELETED and friends.
(GET_NOTE_INSN_NAME): Adjust index by NOTE_INSN_BIAS.
* rtl.c (note_insn_name): Tweek string order.
2000-04-15 Zack Weinberg <zack@wolery.cumb.org>
* cpplex.c (_cpp_read_and_prescan): Enlarge len by setting it

View File

@ -235,13 +235,13 @@ const char rtx_class[] = {
/* Names for kinds of NOTEs and REG_NOTEs. */
const char * const note_insn_name[] =
const char * const note_insn_name[NOTE_INSN_MAX - NOTE_INSN_BIAS] =
{
0, "NOTE_INSN_DELETED",
"", "NOTE_INSN_DELETED",
"NOTE_INSN_BLOCK_BEG", "NOTE_INSN_BLOCK_END",
"NOTE_INSN_LOOP_BEG", "NOTE_INSN_LOOP_END",
"NOTE_INSN_FUNCTION_END", "NOTE_INSN_SETJMP",
"NOTE_INSN_LOOP_CONT", "NOTE_INSN_LOOP_VTOP",
"NOTE_INSN_FUNCTION_END", "NOTE_INSN_SETJMP",
"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",

119
gcc/rtl.h
View File

@ -595,56 +595,83 @@ extern const char * const reg_note_name[];
should add a new value here, don't forget to change the
note_insn_name array in rtl.c. */
/* This note is used to get rid of an insn
when it isn't safe to patch the insn out of the chain. */
#define NOTE_INSN_DELETED -1
#define NOTE_INSN_BLOCK_BEG -2
#define NOTE_INSN_BLOCK_END -3
#define NOTE_INSN_LOOP_BEG -4
#define NOTE_INSN_LOOP_END -5
/* This kind of note is generated at the end of the function body,
just before the return insn or return label.
In an optimizing compilation it is deleted by the first jump optimization,
after enabling that optimizer to determine whether control can fall
off the end of the function body without a return statement. */
#define NOTE_INSN_FUNCTION_END -6
/* This kind of note is generated just after each call to `setjmp', et al. */
#define NOTE_INSN_SETJMP -7
/* Generated at the place in a loop that `continue' jumps to. */
#define NOTE_INSN_LOOP_CONT -8
/* Generated at the start of a duplicated exit test. */
#define NOTE_INSN_LOOP_VTOP -9
/* This marks the point immediately after the last prologue insn. */
#define NOTE_INSN_PROLOGUE_END -10
/* This marks the point immediately prior to the first epilogue insn. */
#define NOTE_INSN_EPILOGUE_BEG -11
/* Generated in place of user-declared labels when they are deleted. */
#define NOTE_INSN_DELETED_LABEL -12
/* This note indicates the start of the real body of the function,
i.e. the point just after all of the parms have been moved into
their homes, etc. */
#define NOTE_INSN_FUNCTION_BEG -13
/* These note where exception handling regions begin and end. */
#define NOTE_INSN_EH_REGION_BEG -14
#define NOTE_INSN_EH_REGION_END -15
/* Generated whenever a duplicate line number note is output. For example,
one is output after the end of an inline function, in order to prevent
the line containing the inline call from being counted twice in gcov. */
#define NOTE_REPEATED_LINE_NUMBER -16
enum insn_note
{
/* Keep all of these numbers negative. Adjust as needed. */
NOTE_INSN_BIAS = -100,
/* Start/end of a live range region, where pseudos allocated on the stack can
be allocated to temporary registers. */
#define NOTE_INSN_RANGE_START -17
#define NOTE_INSN_RANGE_END -18
/* Record which registers are currently live. */
#define NOTE_INSN_LIVE -19
/* Record the struct for the following basic block. */
#define NOTE_INSN_BASIC_BLOCK -20
/* This note is used to get rid of an insn
when it isn't safe to patch the insn out of the chain. */
NOTE_INSN_DELETED,
/* These are used to mark the beginning and end of a lexical block.
See NOTE_BLOCK, identify_blocks and reorder_blocks. */
NOTE_INSN_BLOCK_BEG,
NOTE_INSN_BLOCK_END,
/* These mark the extremes of a loop. */
NOTE_INSN_LOOP_BEG,
NOTE_INSN_LOOP_END,
/* Generated at the place in a loop that `continue' jumps to. */
NOTE_INSN_LOOP_CONT,
/* Generated at the start of a duplicated exit test. */
NOTE_INSN_LOOP_VTOP,
/* This kind of note is generated at the end of the function body,
just before the return insn or return label. In an optimizing
compilation it is deleted by the first jump optimization, after
enabling that optimizer to determine whether control can fall
off the end of the function body without a return statement. */
NOTE_INSN_FUNCTION_END,
/* This kind of note is generated just after each call to `setjmp',
and similar functions that can return twice. */
NOTE_INSN_SETJMP,
/* This marks the point immediately after the last prologue insn. */
NOTE_INSN_PROLOGUE_END,
/* This marks the point immediately prior to the first epilogue insn. */
NOTE_INSN_EPILOGUE_BEG,
/* Generated in place of user-declared labels when they are deleted. */
NOTE_INSN_DELETED_LABEL,
/* This note indicates the start of the real body of the function,
i.e. the point just after all of the parms have been moved into
their homes, etc. */
NOTE_INSN_FUNCTION_BEG,
/* These note where exception handling regions begin and end.
Uses NOTE_EH_HANDLER to identify the region in question. */
NOTE_INSN_EH_REGION_BEG,
NOTE_INSN_EH_REGION_END,
/* Generated whenever a duplicate line number note is output. For example,
one is output after the end of an inline function, in order to prevent
the line containing the inline call from being counted twice in gcov. */
NOTE_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_START,
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,
NOTE_INSN_MAX
};
/* Names for NOTE insn's other than line numbers. */
extern const char * const note_insn_name[];
#define GET_NOTE_INSN_NAME(NOTE_CODE) (note_insn_name[-(NOTE_CODE)])
extern const char * const note_insn_name[NOTE_INSN_MAX - NOTE_INSN_BIAS];
#define GET_NOTE_INSN_NAME(NOTE_CODE) \
(note_insn_name[(NOTE_CODE) - NOTE_INSN_BIAS])
/* The name of a label, in case it corresponds to an explicit label
in the input source code. */