This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] RTL docs update
- From: "Seongbae Park (박성배, 朴成培)" <seongbae dot park at gmail dot com>
- To: gcc-patches <gcc-patches at gcc dot gnu dot org>, "Kenneth Zadeck" <zadeck at naturalbridge dot com>, "Ian Lance Taylor" <iant at google dot com>
- Cc: richard at codesourcery dot com
- Date: Mon, 2 Jul 2007 11:46:30 -0700
- Subject: [PATCH] RTL docs update
Hi,
Enclosed patch is meant to reflect the findings in PR 32437.
While I briefly looked at some of the options for more automated
documentation extraction/generation system ala doxygen or javadoc,
I haven't found a suitable one for rtl.def and tree.def.
So in the mean time, I'll rather update the content.
2007-07-02 Seongbae Park <seongbae.park@gmail.com>
--
#pragma ident "Seongbae Park, compiler, http://seongbae.blogspot.com"
Index: rtl.def
===================================================================
--- rtl.def (revision 126222)
+++ rtl.def (working copy)
@@ -212,8 +212,15 @@ DEF_RTL_EXPR(ASM_OPERANDS, "asm_operands
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 be used as an operand of other rtx.
+ 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 be used as an operand of any other rtx, other than 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.