]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
rtl.texi: Mention that besides as a CODE_LABEL...
authorHans-Peter Nilsson <hp@axis.com>
Tue, 4 Sep 2001 13:47:28 +0000 (13:47 +0000)
committerHans-Peter Nilsson <hp@gcc.gnu.org>
Tue, 4 Sep 2001 13:47:28 +0000 (13:47 +0000)
* 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.

From-SVN: r45378

gcc/ChangeLog
gcc/doc/rtl.texi

index 0c88b6c8dd5037757c043a7d36762255b78a2311..d4b156383d0b5c7c3b5da421f056ad6bbf929b37 100644 (file)
@@ -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.
index c6beaaab84d012b794fba15b3573430adc31c9ae..75cec63fa18dc3b7afb57272a94c6d47423735e5 100644 (file)
@@ -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