Commit ba72e5a6 by Hans-Peter Nilsson Committed by Hans-Peter Nilsson

rtl.texi: Mention that besides as a CODE_LABEL...

	* 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
parent 24697ca0
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> 2001-09-04 Nathan Sidwell <nathan@codesourcery.com>
* c-common.h (tree_dump_index): Add more comments. * c-common.h (tree_dump_index): Add more comments.
......
...@@ -659,7 +659,9 @@ outside the innermost loop containing the insn in which the @code{label_ref} ...@@ -659,7 +659,9 @@ outside the innermost loop containing the insn in which the @code{label_ref}
was found. was found.
In @code{code_label} expressions, it is 1 if the label may never be deleted. 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}. 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. ...@@ -1080,9 +1082,9 @@ Usually that is the only mode for which a symbol is directly valid.
@findex label_ref @findex label_ref
@item (label_ref @var{label}) @item (label_ref @var{label})
Represents the value of an assembler label for code. It contains one Represents the value of an assembler label for code. It contains one
operand, an expression, which must be a @code{code_label} that appears operand, an expression, which must be a @code{code_label} or a @code{note}
in the instruction sequence to identify the place where the label of type @code{NOTE_INSN_DELETED_LABEL} that appears in the instruction
should go. sequence to identify the place where the label should go.
The reason for using a distinct expression type for code label The reason for using a distinct expression type for code label
references is so that jump optimization can distinguish them. 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 ...@@ -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 appears within a @code{label_ref} which represents the address of
the label, as a number. 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 @findex LABEL_NUSES
The field @code{LABEL_NUSES} is only defined once the jump optimization The field @code{LABEL_NUSES} is only defined once the jump optimization
phase is completed and contains the number of times this label is phase is completed and contains the number of times this label is
...@@ -2667,6 +2672,12 @@ must contain a null pointer): ...@@ -2667,6 +2672,12 @@ must contain a null pointer):
Such a note is completely ignorable. Some passes of the compiler Such a note is completely ignorable. Some passes of the compiler
delete insns by altering them into notes of this kind. 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_BEG
@findex NOTE_INSN_BLOCK_END @findex NOTE_INSN_BLOCK_END
@item NOTE_INSN_BLOCK_BEG @item NOTE_INSN_BLOCK_BEG
...@@ -2681,7 +2692,8 @@ of debugging information. ...@@ -2681,7 +2692,8 @@ of debugging information.
@itemx NOTE_INSN_EH_REGION_END @itemx NOTE_INSN_EH_REGION_END
These types of notes indicate the position of the beginning and end of a These types of notes indicate the position of the beginning and end of a
level of scoping for exception handling. @code{NOTE_BLOCK_NUMBER} 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_BEG
@findex NOTE_INSN_LOOP_END @findex NOTE_INSN_LOOP_END
...@@ -2876,7 +2888,8 @@ last insns, respectively. ...@@ -2876,7 +2888,8 @@ last insns, respectively.
@findex REG_LABEL @findex REG_LABEL
@item 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 @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 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 optimization to be aware that @var{op} is, in fact, being used, and flow
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment