diff options
author | steven <steven@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-04-08 19:59:57 +0000 |
---|---|---|
committer | steven <steven@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-04-08 19:59:57 +0000 |
commit | 3ff7f7e73ee3d4d153d1a1fcc317401797689236 (patch) | |
tree | 0610536ff474f68b4b12cecefe9563258f831516 /gcc/rtl.def | |
parent | c761b6a4d9796f47705a6a9952d53dd0146cfdf4 (diff) | |
download | gcc-3ff7f7e73ee3d4d153d1a1fcc317401797689236.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@197611 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/rtl.def')
-rw-r--r-- | gcc/rtl.def | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/gcc/rtl.def b/gcc/rtl.def index 5da3dd3ec00..f8aea32b397 100644 --- a/gcc/rtl.def +++ b/gcc/rtl.def @@ -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. */ |