OSDN Git Service

2005-06-15 Andrew Pinski <pinskia@physics.uc.edu>
[pf3gnuchains/gcc-fork.git] / gcc / tree.def
index 37f85ad..b8d5a36 100644 (file)
@@ -1,6 +1,6 @@
 /* This file contains the definitions and documentation for the
    tree codes used in GCC.
-   Copyright (C) 1987, 1988, 1993, 1995, 1997, 1998, 2000, 2001, 2004
+   Copyright (C) 1987, 1988, 1993, 1995, 1997, 1998, 2000, 2001, 2004, 2005
    Free Software Foundation, Inc.
 
 This file is part of GCC.
@@ -148,7 +148,7 @@ DEFTREECODE (OFFSET_TYPE, "offset_type", tcc_type, 0)
 DEFTREECODE (ENUMERAL_TYPE, "enumeral_type", tcc_type, 0)
 
 /* Boolean type (true or false are the only values).  Looks like an
-   INTEGRAL_TYPE. */
+   INTEGRAL_TYPE.  */
 DEFTREECODE (BOOLEAN_TYPE, "boolean_type", tcc_type, 0)
 
 /* CHAR in Java; not used in C.  Looks like an INTEGRAL_TYPE.  */
@@ -171,7 +171,7 @@ DEFTREECODE (REAL_TYPE, "real_type", tcc_type, 0)
 /* The ordering of the following codes is optimized for the checking
    macros in tree.h.  Changing the order will degrade the speed of the
    compiler.  POINTER_TYPE, REFERENCE_TYPE.  Note that this range
-   overlaps the previous range of ordered types. */
+   overlaps the previous range of ordered types.  */
      
 /* All pointer-to-x types have code POINTER_TYPE.
    The TREE_TYPE points to the node for the type pointed to.  */
@@ -254,9 +254,6 @@ DEFTREECODE (FUNCTION_TYPE, "function_type", tcc_type, 0)
    includes the hidden argument for "self".  */
 DEFTREECODE (METHOD_TYPE, "method_type", tcc_type, 0)
 
-/* Used for Pascal; details not determined right now.  */
-DEFTREECODE (FILE_TYPE, "file_type", tcc_type, 0)
-
 /* This is a language-specific kind of type.
    Its meaning is defined by the language front end.
    layout_type does not know how to lay this out,
@@ -487,7 +484,7 @@ DEFTREECODE (TARGET_EXPR, "target_expr", tcc_expression, 4)
    have VOID_TYPE.  The same constraints apply to operand 2.  */
 DEFTREECODE (COND_EXPR, "cond_expr", tcc_expression, 3)
 
-/* Vector conditional expresion. It is like COND_EXPR, but with
+/* Vector conditional expression. It is like COND_EXPR, but with
    vector operands.
 
    A = VEC_COND_EXPR ( X < Y, B, C)
@@ -650,6 +647,9 @@ DEFTREECODE (FLOAT_EXPR, "float_expr", tcc_unary, 1)
 /* Unary negation.  */
 DEFTREECODE (NEGATE_EXPR, "negate_expr", tcc_unary, 1)
 
+/* Minimum and maximum values.  When used with floating point, if both
+   operands are zeros, or if either operand is NaN, then it is unspecified
+   which of the two operands is returned as the result.  */
 DEFTREECODE (MIN_EXPR, "min_expr", tcc_binary, 2)
 DEFTREECODE (MAX_EXPR, "max_expr", tcc_binary, 2)
 
@@ -864,7 +864,7 @@ DEFTREECODE (SSA_NAME, "ssa_name", tcc_exceptional, 0)
    PHI_ARG_ELT returns the Ith tuple <ssa_name, edge> from the
    argument list.  Each tuple contains the incoming reaching
    definition (SSA_NAME node) and the edge via which that definition
-   is coming through.   */
+   is coming through.  */
 DEFTREECODE (PHI_NODE, "phi_node", tcc_exceptional, 0)
 
 /* Used to represent a typed exception handler.  CATCH_TYPES is the type (or
@@ -899,6 +899,20 @@ DEFTREECODE (STATEMENT_LIST, "statement_list", tcc_exceptional, 0)
    the same value, they will be assigned the same value handle.  */
 DEFTREECODE (VALUE_HANDLE, "value_handle", tcc_exceptional, 0)
 
+/* Predicate assertion.  Artificial expression generated by the optimizers
+   to keep track of predicate values.  This expression may only appear on
+   the RHS of assignments.
+   
+   Given X = ASSERT_EXPR <Y, EXPR>, the optimizers can infer
+   two things:
+
+       1- X is a copy of Y.
+       2- EXPR is a GIMPLE conditional expression (as defined by
+          is_gimple_condexpr) and is known to be true.
+
+   The type of the expression is the same as Y.  */
+DEFTREECODE (ASSERT_EXPR, "assert_expr", tcc_expression, 2)
+
 /* Base class information. Holds information about a class as a
    baseclass of itself or another class.  */
 DEFTREECODE (TREE_BINFO, "tree_binfo", tcc_exceptional, 0)
@@ -921,6 +935,18 @@ DEFTREECODE (WITH_SIZE_EXPR, "with_size_expr", tcc_expression, 2)
    generated by the builtin targetm.vectorize.mask_for_load_builtin_decl.  */
 DEFTREECODE (REALIGN_LOAD_EXPR, "realign_load", tcc_expression, 3)
 
+/* Low-level memory addressing.  Operands are SYMBOL (static or global
+   variable), BASE (register), INDEX (register), STEP (integer constant),
+   OFFSET (integer constant).  Corresponding address is
+   SYMBOL + BASE + STEP * INDEX + OFFSET.  Only variations and values valid on
+   the target are allowed.
+   
+   The sixth argument is the reference to the original memory access, which
+   is preserved for the purposes of the RTL alias analysis.  The seventh
+   argument is a tag representing results of the tree level alias analysis.  */
+
+DEFTREECODE (TARGET_MEM_REF, "target_mem_ref", tcc_reference, 7)
+
 /*
 Local variables:
 mode:c