diff options
author | Hans-Peter Nilsson <hp@axis.com> | 2001-09-04 13:47:28 +0000 |
---|---|---|
committer | Hans-Peter Nilsson <hp@axis.com> | 2001-09-04 13:47:28 +0000 |
commit | 2f394156dadd001089022d670c6072b81f2281be (patch) | |
tree | fd3832aa84607835d03786526f04180c6963801b | |
parent | a4c43803d096a28ffae8a11ebd006be58c13190d (diff) |
* doc/rtl.texi: Mention that besides as a CODE_LABEL, a label can
sometimes be represented as a NOTE of type
NOTE_INSN_DELETED_LABEL.
(Insns): Document NOTE_INSN_DELETED_LABEL.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@45378 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/doc/rtl.texi | 25 |
2 files changed, 26 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0c88b6c8dd5..d4b156383d0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2001-09-04 Hans-Peter Nilsson <hp@axis.com> + + * doc/rtl.texi: Mention that besides as a CODE_LABEL, a label can + sometimes be represented as a NOTE of type + NOTE_INSN_DELETED_LABEL. + (Insns): Document NOTE_INSN_DELETED_LABEL. + 2001-09-04 Nathan Sidwell <nathan@codesourcery.com> * c-common.h (tree_dump_index): Add more comments. diff --git a/gcc/doc/rtl.texi b/gcc/doc/rtl.texi index c6beaaab84d..75cec63fa18 100644 --- a/gcc/doc/rtl.texi +++ b/gcc/doc/rtl.texi @@ -659,7 +659,9 @@ outside the innermost loop containing the insn in which the @code{label_ref} was found. In @code{code_label} expressions, it is 1 if the label may never be deleted. -This is used for labels which are the target of non-local gotos. +This is used for labels which are the target of non-local gotos. Such a +label that would have been deleted is replaced with a @code{note} of type +@code{NOTE_INSN_DELETED_LABEL}. In an RTL dump, this flag is represented as @samp{/s}. @@ -1080,9 +1082,9 @@ Usually that is the only mode for which a symbol is directly valid. @findex label_ref @item (label_ref @var{label}) Represents the value of an assembler label for code. It contains one -operand, an expression, which must be a @code{code_label} that appears -in the instruction sequence to identify the place where the label -should go. +operand, an expression, which must be a @code{code_label} or a @code{note} +of type @code{NOTE_INSN_DELETED_LABEL} that appears in the instruction +sequence to identify the place where the label should go. The reason for using a distinct expression type for code label references is so that jump optimization can distinguish them. @@ -2625,6 +2627,9 @@ When a @code{code_label} appears in an RTL expression, it normally appears within a @code{label_ref} which represents the address of the label, as a number. +Besides as a @code{code_label}, a label can also be represented as a +@code{note} of type @code{NOTE_INSN_DELETED_LABEL}. + @findex LABEL_NUSES The field @code{LABEL_NUSES} is only defined once the jump optimization phase is completed and contains the number of times this label is @@ -2667,6 +2672,12 @@ must contain a null pointer): Such a note is completely ignorable. Some passes of the compiler delete insns by altering them into notes of this kind. +@findex NOTE_INSN_DELETED_LABEL +@item NOTE_INSN_DELETED_LABEL +This marks what used to be a @code{code_label}, but was not used for other +purposes than taking its address and was transformed to mark that no +code jumps to it. + @findex NOTE_INSN_BLOCK_BEG @findex NOTE_INSN_BLOCK_END @item NOTE_INSN_BLOCK_BEG @@ -2681,7 +2692,8 @@ of debugging information. @itemx NOTE_INSN_EH_REGION_END These types of notes indicate the position of the beginning and end of a level of scoping for exception handling. @code{NOTE_BLOCK_NUMBER} -identifies which @code{CODE_LABEL} is associated with the given region. +identifies which @code{CODE_LABEL} or @code{note} of type +@code{NOTE_INSN_DELETED_LABEL} is associated with the given region. @findex NOTE_INSN_LOOP_BEG @findex NOTE_INSN_LOOP_END @@ -2876,7 +2888,8 @@ last insns, respectively. @findex REG_LABEL @item REG_LABEL -This insn uses @var{op}, a @code{code_label}, but is not a +This insn uses @var{op}, a @code{code_label} or a @code{note} of type +@code{NOTE_INSN_DELETED_LABEL}, but is not a @code{jump_insn}, or it is a @code{jump_insn} that required the label to be held in a register. The presence of this note allows jump optimization to be aware that @var{op} is, in fact, being used, and flow |