added some comment: undefined variables
[libfirm] / ir / ir / ircons.h
index 42d8430..b67a217 100644 (file)
  *    ------------------
  *                       Not yet documented. See irmode.h.
  *
- *    GLOBAL VARIABLES
+ *    GLOBAL VARIABLES -- now also fields of ir_graph.
  *    ================
  *
  *    current_ir_graph   Points to the current ir_graph.  All constructors for
  *
  *
  *
- *    CONSTRUCTOR FOR IR_GRAPH
+ *    CONSTRUCTOR FOR IR_GRAPH --> see irgraph.h
  *    ========================
  *
- *    ir_graph *new_ir_graph (entity *ent, int params);
- *    -------------------------------------------------
- *
- *    This constructor generates the basic infrastructure needed to
- *    represent a procedure in FIRM.
- *
- *    The parameters of new_ir_graph are:
- *
- *      *ent             A pointer to an entity representing the procedure.
- *
- *      params           An integer giving the number of local variables in the
- *                       procedure.
  *
- *    It allocates an ir_graph and sets current_ir_graph to point to this
- *    graph.  Further it allocates the following nodes needed for every
- *    procedure:
- *
- *    * The start block containing a start node and Proj nodes for it's
- *      five results (X, M, P, P, T).
- *    * The end block containing an end node. This block is not matured
- *      after executing new_ir_graph as predecessors need to be added to it.
- *      (Maturing a block means fixing it's number of predecessors.)
- *    * The current block, which is empty and also not matured.
- *
- *    Further it enters the global store into the datastructure of the start
- *    block that contanis all valid values in this block (set_store()).  This
- *    datastructure is used to build the Phi nodes and removed after completion
- *    of the graph.
- *    There is no path from end to start in the graph after calling ir_graph.
- *
- *
- *    PROCEDURE TO CONSTRUCT AN IR GRAPH
+ *    PROCEDURE TO CONSTRUCT AN IR GRAPH --> see also Firm tutorial
  *    ==================================
  *
  *    This library supplies several interfaces to construct a FIRM graph for
  *    To use the functionality of the comfortable interface correctly the Front
  *    End needs to follow certain protocols.  This is explained in the following.
  *    To build a correct IR with the other interfaces study the semantics of
- *    the firm node (See tech-reprot UKA 1999-44).  For the construction of
+ *    the firm node (See tech-reprot UKA 1999-14).  For the construction of
  *    types and entities see the documentation in those modules.
  *
  *    First the Frontend needs to decide which variables and values used in
  *    a procedure can be represented by dataflow edges.  These are variables
  *    that need not be saved to memory as they cause no side effects visible
- *    out of the procedure.  In general these are all compiler generated
+ *    out of the procedure.  Often these are all compiler generated
  *    variables and simple local variables of the procedure as integers,
  *    reals and pointers.  The frontend has to count and number these variables.
  *
  *    add_in_edge(this_block, cf_pred1);
  *    add_in_edge(this_block, cf_pred2);
  *    mature_block(this_block);
- *    a_val = get_value(17, mode_I);
+ *    a_val = get_value(42, mode_I);
  *    mem = get_store();
  *    div = new_Div(mem, a_val, a_val);
  *    mem = new_Proj(div, mode_M, 0);   * for the numbers for Proj see docu *
  *    res = new_Proj(div, mode_I, 2);
  *    set_store(mem);
- *    set_value(res, 17);
+ *    set_value(res, 42);
  *    cf_op = new_Jmp();
  *
  *    For further information look at the documentation of the nodes and
  *
  *      get_value(loop_body, x);   // gets the Phi in loop_header
  *      set_value(loop_header, x); // sets the value the above get_value should
- *      // have returned!!!
+ *                                 // have returned!!!
  *
  *    Mature_block also fixes the number of inputs to the Phi nodes.  Mature_block
  *    should be called as early as possible, as afterwards the generation of Phi
  *    ir_node *new_Minus (ir_node *op, ir_mode *mode)
  *    -----------------------------------------------
  *
- *    This constructor is for unary Minus operations on floating point
- *    values.  Such a Minus can trap if it is implemented as a Sub from
- *    zero due to rounding errors.
+ *    Unary Minus operations on floating point values.
  *
  *    ir_node *new_Mul (ir_node *op1, ir_node *op2, ir_mode *mode)
  *    ------------------------------------------------------------
  *    adds the value to the array of used values at position pos.  Pos
  *    has to be a unique identifier for an entry in the procedure's
  *    definition table.  It can be used to access the value again.
+ *    Requires current_block to be set correctly.
  *
  *    ir_node *get_value (int pos, ir_mode *mode)
  *    -------------------------------------------
  *    definition reaches the currend block on several different
  *    paths.  This Phi node will be eliminated if optimizations are
  *    turned on right after it's creation.
- *
+ *    Requires current_block to be set correctly.
  *
  *    There are two special routines for the global store:
  *
  *
  *    Adds the store to the array of known values at a reserved
  *    position.
+ *    Requires current_block to be set correctly.
  *
  *    inline ir_node *get_store (void)
  *    --------------------------------
  *
  *    Returns the node defining the actual store.
+ *    Requires current_block to be set correctly.
  *****
  */
 
@@ -1118,7 +1089,7 @@ ir_node *new_r_Sel    (ir_graph *irg, ir_node *block, ir_node *store,
                       entity *ent);
 ir_node *new_r_Call   (ir_graph *irg, ir_node *block, ir_node *store,
                       ir_node *callee, int arity, ir_node **in,
-                      type_method *type);
+                      type *type);
 ir_node *new_r_Add    (ir_graph *irg, ir_node *block,
                       ir_node *op1, ir_node *op2, ir_mode *mode);
 ir_node *new_r_Sub    (ir_graph *irg, ir_node *block,
@@ -1197,11 +1168,11 @@ ir_node *new_Return (ir_node *store, int arity, ir_node **in);
 ir_node *new_Raise  (ir_node *store, ir_node *obj);
 ir_node *new_Const  (ir_mode *mode, tarval *con);
 ir_node *new_SymConst (type_or_id_p value, symconst_kind kind);
-ir_node *new_simpleSel (ir_node *store, ir_node *objptr, entity *ent);
+ir_node *new_simpleSel(ir_node *store, ir_node *objptr, entity *ent);
 ir_node *new_Sel    (ir_node *store, ir_node *objptr, int arity, ir_node **in,
                      entity *ent);
 ir_node *new_Call   (ir_node *store, ir_node *callee, int arity, ir_node **in,
-                    type_method *type);
+                    type *type);
 ir_node *new_Add    (ir_node *op1, ir_node *op2, ir_mode *mode);
 ir_node *new_Sub    (ir_node *op1, ir_node *op2, ir_mode *mode);
 ir_node *new_Minus  (ir_node *op,  ir_mode *mode);