rtl.h (enum insn_note): New enumeration.
authorRichard Henderson <rth@cygnus.com>
Sun, 16 Apr 2000 20:23:02 +0000 (13:23 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Sun, 16 Apr 2000 20:23:02 +0000 (13:23 -0700)
        * 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

gcc/ChangeLog
gcc/rtl.c
gcc/rtl.h

index b98929533eae5b9fefd239effd5eb4db4778b72e..c0dc9205c1505692735bc7fc8e7beb15486643ec 100644 (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
index bfe3806c06d471c8b769e8bcc869f3306da2ab61..8adbd52d8b86da9416f17169ca55f3b13a3de260 100644 (file)
--- a/gcc/rtl.c
+++ b/gcc/rtl.c
@@ -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",
index c22727eb84dd8d92ce3c76584e8b8a005708b428..9d655a2cb88e7cf6cad0579af74f8ba7ebfdacc0 100644 (file)
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -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
-
-/* 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
+enum insn_note
+{
+  /* Keep all of these numbers negative.  Adjust as needed.  */
+  NOTE_INSN_BIAS = -100,
+
+  /* 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.  */