OSDN Git Service

PR target/11327
[pf3gnuchains/gcc-fork.git] / gcc / rtl.def
index 5038514..7bee09b 100644 (file)
@@ -331,14 +331,17 @@ DEF_RTL_EXPR(CONST, "const", "e", RTX_CONST_OBJ)
    by a SET whose first operand is (PC).  */
 DEF_RTL_EXPR(PC, "pc", "", RTX_OBJ)
 
-/* Used in the cselib routines to describe a value.  */
+/* Used in the cselib routines to describe a value.  Objects of this
+   kind are only allocated in cselib.c, in an alloc pool instead of
+   in GC memory.  The only operand of a VALUE is a cselib_val_struct.  */
 DEF_RTL_EXPR(VALUE, "value", "0", RTX_OBJ)
 
 /* A register.  The "operand" is the register number, accessed with
    the REGNO macro.  If this number is less than FIRST_PSEUDO_REGISTER
    than a hardware register is being referred to.  The second operand
    holds the original register number - this will be different for a
-   pseudo register that got turned into a hard register.
+   pseudo register that got turned into a hard register.  The third
+   operand points to a reg_attrs structure.
    This rtx needs to have as many (or more) fields as a MEM, since we
    can change REG rtx's into MEMs during reload.  */
 DEF_RTL_EXPR(REG, "reg", "i00", RTX_OBJ)
@@ -386,9 +389,8 @@ DEF_RTL_EXPR(MEM, "mem", "e0", RTX_OBJ)
 
 /* Reference to an assembler label in the code for this function.
    The operand is a CODE_LABEL found in the insn chain.
-   The unprinted fields 1 and 2 are used in flow.c for the
-   LABEL_NEXTREF and CONTAINING_INSN.  */
-DEF_RTL_EXPR(LABEL_REF, "label_ref", "u00", RTX_CONST_OBJ)
+   The unprinted field 1 is used in flow.c for the LABEL_NEXTREF.  */
+DEF_RTL_EXPR(LABEL_REF, "label_ref", "u0", RTX_CONST_OBJ)
 
 /* Reference to a named label: 
    Operand 0: label name
@@ -585,10 +587,12 @@ DEF_RTL_EXPR(PARITY, "parity", "e", RTX_UNARY)
    If BITS_BIG_ENDIAN is defined, the first bit is the msb and
    operand 2 counts from the msb of the memory unit.
    Otherwise, the first bit is the lsb and operand 2 counts from
-   the lsb of the memory unit.  */
+   the lsb of the memory unit.
+   This kind of expression can not appear as an lvalue in RTL.  */
 DEF_RTL_EXPR(SIGN_EXTRACT, "sign_extract", "eee", RTX_BITFIELD_OPS)
 
-/* Similar for unsigned bit-field.  */
+/* Similar for unsigned bit-field.
+   But note!  This kind of expression _can_ appear as an lvalue.  */
 DEF_RTL_EXPR(ZERO_EXTRACT, "zero_extract", "eee", RTX_BITFIELD_OPS)
 
 /* For RISC machines.  These save memory when splitting insns.  */
@@ -600,44 +604,6 @@ DEF_RTL_EXPR(HIGH, "high", "e", RTX_CONST_OBJ)
    of a constant expression.  */
 DEF_RTL_EXPR(LO_SUM, "lo_sum", "ee", RTX_OBJ)
 
-/* Header for range information.  Operand 0 is the NOTE_INSN_RANGE_BEG insn.
-   Operand 1 is the NOTE_INSN_RANGE_END insn.  Operand 2 is a vector of all of
-   the registers that can be substituted within this range.  Operand 3 is the
-   number of calls in the range.  Operand 4 is the number of insns in the
-   range.  Operand 5 is the unique range number for this range.  Operand 6 is
-   the basic block # of the start of the live range.  Operand 7 is the basic
-   block # of the end of the live range.  Operand 8 is the loop depth.  Operand
-   9 is a bitmap of the registers live at the start of the range.  Operand 10
-   is a bitmap of the registers live at the end of the range.  Operand 11 is
-   marker number for the start of the range.  Operand 12 is the marker number
-   for the end of the range.  */
-DEF_RTL_EXPR(RANGE_INFO, "range_info", "uuEiiiiiibbii", RTX_EXTRA)
-
-/* Registers that can be substituted within the range.  Operand 0 is the
-   original pseudo register number.  Operand 1 will be filled in with the
-   pseudo register the value is copied for the duration of the range.  Operand
-   2 is the number of references within the range to the register.  Operand 3
-   is the number of sets or clobbers of the register in the range.  Operand 4
-   is the number of deaths the register has.  Operand 5 is the copy flags that
-   give the status of whether a copy is needed from the original register to
-   the new register at the beginning of the range, or whether a copy from the
-   new register back to the original at the end of the range.  Operand 6 is the
-   live length.  Operand 7 is the number of calls that this register is live
-   across.  Operand 8 is the symbol node of the variable if the register is a
-   user variable.  Operand 9 is the block node that the variable is declared
-   in if the register is a user variable.  */
-DEF_RTL_EXPR(RANGE_REG, "range_reg", "iiiiiiiitt", RTX_EXTRA)
-
-/* Information about a local variable's ranges.  Operand 0 is an EXPR_LIST of
-   the different ranges a variable is in where it is copied to a different
-   pseudo register.  Operand 1 is the block that the variable is declared in.
-   Operand 2 is the number of distinct ranges.  */
-DEF_RTL_EXPR(RANGE_VAR, "range_var", "eti", RTX_EXTRA)
-
-/* Information about the registers that are live at the current point.  Operand
-   0 is the live bitmap.  Operand 1 is the original block number.  */
-DEF_RTL_EXPR(RANGE_LIVE, "range_live", "bi", RTX_EXTRA)
-
 /* Describes a merge operation between two vector values.
    Operands 0 and 1 are the vectors to be merged, operand 2 is a bitmask
    that specifies where the parts of the result are taken from.  Set bits
@@ -685,6 +651,7 @@ DEF_RTL_EXPR(VAR_LOCATION, "var_location", "te", RTX_EXTRA)
 
 /* All expressions from this point forward appear only in machine
    descriptions.  */
+#ifdef GENERATOR_FILE
 
 /* Include a secondary machine-description file at this point.  */
 DEF_RTL_EXPR(INCLUDE, "include", "s", RTX_EXTRA)
@@ -1160,6 +1127,7 @@ DEF_RTL_EXPR (ATTR_FLAG, "attr_flag", "s", RTX_EXTRA)
    true, the second operand will be used as the value of the conditional.  */
 DEF_RTL_EXPR(COND, "cond", "Ee", RTX_EXTRA)
 
+#endif /* GENERATOR_FILE */
 
 /*
 Local variables: