aboutsummaryrefslogtreecommitdiff
path: root/gcc/rtl.def
diff options
context:
space:
mode:
authorSeongbae Park <seongbae.park@gmail.com>2007-07-03 22:44:26 +0000
committerSeongbae Park <spark@gcc.gnu.org>2007-07-03 22:44:26 +0000
commite3ceb300c565aff0fc5e84cba60e4f715db62a27 (patch)
treefee268f6ce2ec4dded09aca6c74859c781bb418e /gcc/rtl.def
parentd9ad7862455aba7f2cb9b4f42859dc228702d5f7 (diff)
downloadgcc-e3ceb300c565aff0fc5e84cba60e4f715db62a27.zip
gcc-e3ceb300c565aff0fc5e84cba60e4f715db62a27.tar.gz
gcc-e3ceb300c565aff0fc5e84cba60e4f715db62a27.tar.bz2
rtl.def (UNSPEC, [...]): More comments.
2007-07-03 Seongbae Park <seongbae.park@gmail.com> * rtl.def (UNSPEC, USE, CLOBBER): More comments. From-SVN: r126286
Diffstat (limited to 'gcc/rtl.def')
-rw-r--r--gcc/rtl.def23
1 files changed, 19 insertions, 4 deletions
diff --git a/gcc/rtl.def b/gcc/rtl.def
index 5acf475..3fb68ec 100644
--- a/gcc/rtl.def
+++ b/gcc/rtl.def
@@ -212,8 +212,15 @@ DEF_RTL_EXPR(ASM_OPERANDS, "asm_operands", "ssiEEsi", RTX_EXTRA)
operations is to be performed.
(Note that the vector must be the first operand because of the way that
genrecog.c record positions within an insn.)
- This can occur all by itself in a PATTERN, as a component of a PARALLEL,
- or inside an expression. */
+
+ UNSPEC can occur all by itself in a PATTERN, as a component of a PARALLEL,
+ or inside an expression.
+ UNSPEC by itself or as a component of a PARALLEL
+ is currently considered not deletable.
+
+ FIXME: Replace all uses of UNSPEC that appears by itself or as a component
+ of a PARALLEL with USE.
+ */
DEF_RTL_EXPR(UNSPEC, "unspec", "Ei", RTX_EXTRA)
/* Similar, but a volatile operation and one which may trap. */
@@ -273,12 +280,20 @@ DEF_RTL_EXPR(SET, "set", "ee", RTX_EXTRA)
/* Indicate something is used in a way that we don't want to explain.
For example, subroutine calls will use the register
- in which the static chain is passed. */
+ in which the static chain is passed.
+
+ USE can not appear as an operand of other rtx except for PARALLEL.
+ USE is not deletable, as it indicates that the operand
+ is used in some unknown way. */
DEF_RTL_EXPR(USE, "use", "e", RTX_EXTRA)
/* Indicate something is clobbered in a way that we don't want to explain.
For example, subroutine calls will clobber some physical registers
- (the ones that are by convention not saved). */
+ (the ones that are by convention not saved).
+
+ CLOBBER can not appear as an operand of other rtx except for PARALLEL.
+ CLOBBER of a hard register appearing by itself (not within PARALLEL)
+ is considered undeletable before reload. */
DEF_RTL_EXPR(CLOBBER, "clobber", "e", RTX_EXTRA)
/* Call a subroutine.