rtl.texi (sequence): Rewrite documentation to match the current use of SEQUENCE rtl objects.

* doc/rtl.texi (sequence): Rewrite documentation to match the
	current use of SEQUENCE rtl objects.
	* rtl.def (SEQUENCE): Likewise.

	* doc/rtl.texi (NOTE_INSN_EH_REGION_BEG, NOTE_INSN_EH_REGION_END):
	Update documentation.
	(NOTE_INSN_LOOP_BEG, NOTE_INSN_LOOP_END, NOTE_INSN_LOOP_CONT,
	NOTE_INSN_LOOP_VTOP): Remove documentation for non-existing notes.

	* reg-notes.def (REG_EH_CONTEXT): Remove unused note.

From-SVN: r197611
This commit is contained in:
Steven Bosscher 2013-04-08 19:59:57 +00:00
parent a2d0800a41
commit 9fb6b620f0
4 changed files with 50 additions and 42 deletions

View File

@ -1,3 +1,16 @@
2013-04-08 Steven Bosscher <steven@gcc.gnu.org>
* doc/rtl.texi (sequence): Rewrite documentation to match the
current use of SEQUENCE rtl objects.
* rtl.def (SEQUENCE): Likewise.
* doc/rtl.texi (NOTE_INSN_EH_REGION_BEG, NOTE_INSN_EH_REGION_END):
Update documentation.
(NOTE_INSN_LOOP_BEG, NOTE_INSN_LOOP_END, NOTE_INSN_LOOP_CONT,
NOTE_INSN_LOOP_VTOP): Remove documentation for non-existing notes.
* reg-notes.def (REG_EH_CONTEXT): Remove unused note.
2013-04-08 Teresa Johnson <tejohnson@google.com>
* basic-block.h (GCOV_COMPUTE_SCALE): Define.

View File

@ -3099,17 +3099,10 @@ side-effects.
@findex sequence
@item (sequence [@var{insns} @dots{}])
Represents a sequence of insns. Each of the @var{insns} that appears
in the vector is suitable for appearing in the chain of insns, so it
must be an @code{insn}, @code{jump_insn}, @code{call_insn},
@code{code_label}, @code{barrier} or @code{note}.
A @code{sequence} RTX is never placed in an actual insn during RTL
generation. It represents the sequence of insns that result from a
@code{define_expand} @emph{before} those insns are passed to
@code{emit_insn} to insert them in the chain of insns. When actually
inserted, the individual sub-insns are separated out and the
@code{sequence} is forgotten.
Represents a sequence of insns. If a @code{sequence} appears in the
chain of insns, then each of the @var{insns} that appears in the sequence
must be suitable for appearing in the chain of insns, i.e. must satisfy
the @code{INSN_P} predicate.
After delay-slot scheduling is completed, an insn and all the insns that
reside in its delay slots are grouped together into a @code{sequence}.
@ -3123,6 +3116,19 @@ the effect of the insns in the delay slots. In such a case,
the branch and should be executed only if the branch is taken; otherwise
the insn should be executed only if the branch is not taken.
@xref{Delay Slots}.
Some back ends also use @code{sequence} objects for purposes other than
delay-slot groups. This is not supported in the common parts of the
compiler, which treat such sequences as delay-slot groups.
DWARF2 Call Frame Address (CFA) adjustments are sometimes also expressed
using @code{sequence} objects as the value of a @code{RTX_FRAME_RELATED_P}
note. This only happens if the CFA adjustments cannot be easily derived
from the pattern of the instruction to which the note is attached. In
such cases, the value of the note is used instead of best-guesing the
semantics of the instruction. The back end can attach notes containing
a @code{sequence} of @code{set} patterns that express the effect of the
parent instruction.
@end table
These expression codes appear in place of a side effect, as the body of
@ -3602,28 +3608,8 @@ of debugging information.
@item NOTE_INSN_EH_REGION_BEG
@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} 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
@item NOTE_INSN_LOOP_BEG
@itemx NOTE_INSN_LOOP_END
These types of notes indicate the position of the beginning and end
of a @code{while} or @code{for} loop. They enable the loop optimizer
to find loops quickly.
@findex NOTE_INSN_LOOP_CONT
@item NOTE_INSN_LOOP_CONT
Appears at the place in a loop that @code{continue} statements jump to.
@findex NOTE_INSN_LOOP_VTOP
@item NOTE_INSN_LOOP_VTOP
This note indicates the place in a loop where the exit test begins for
those loops in which the exit test has been duplicated. This position
becomes another virtual start of the loop when considering loop
invariants.
level of scoping for exception handling. @code{NOTE_EH_HANDLER}
identifies which region is associated with these notes.
@findex NOTE_INSN_FUNCTION_BEG
@item NOTE_INSN_FUNCTION_BEG

View File

@ -172,11 +172,6 @@ REG_NOTE (CFA_WINDOW_SAVE)
the rest of the compiler as a CALL_INSN. */
REG_NOTE (CFA_FLUSH_QUEUE)
/* Indicates that REG holds the exception context for the function.
This context is shared by inline functions, so the code to acquire
the real exception context is delayed until after inlining. */
REG_NOTE (EH_CONTEXT)
/* Indicates what exception region an INSN belongs in. This is used
to indicate what region to which a call may throw. REGION 0
indicates that a call cannot throw at all. REGION -1 indicates

View File

@ -102,10 +102,24 @@ DEF_RTL_EXPR(EXPR_LIST, "expr_list", "ee", RTX_EXTRA)
The insns are represented in print by their uids. */
DEF_RTL_EXPR(INSN_LIST, "insn_list", "ue", RTX_EXTRA)
/* SEQUENCE appears in the result of a `gen_...' function
for a DEFINE_EXPAND that wants to make several insns.
Its elements are the bodies of the insns that should be made.
`emit_insn' takes the SEQUENCE apart and makes separate insns. */
/* SEQUENCE is used in late passes of the compiler to group insns for
one reason or another.
For example, after delay slot filling, branch instructions with filled
delay slots are represented as a SEQUENCE of length 1 + n_delay_slots,
with the branch instruction in XEXPVEC(seq, 0, 0) and the instructions
occupying the delay slots in the remaining XEXPVEC slots.
Another place where a SEQUENCE may appear, is in REG_FRAME_RELATED_EXPR
notes, to express complex operations that are not obvious from the insn
to which the REG_FRAME_RELATED_EXPR note is attached. In this usage of
SEQUENCE, the sequence vector slots do not hold real instructions but
only pseudo-instructions that can be translated to DWARF CFA expressions.
Some back ends also use SEQUENCE to group insns in bundles.
Much of the compiler infrastructure is not prepared to handle SEQUENCE
objects. Only passes after pass_free_cfg are expected to handle them. */
DEF_RTL_EXPR(SEQUENCE, "sequence", "E", RTX_EXTRA)
/* Represents a non-global base address. This is only used in alias.c. */