comments, better assertions
authorGötz Lindenmaier <goetz@ipd.info.uni-karlsruhe.de>
Sat, 25 Sep 2004 11:24:03 +0000 (11:24 +0000)
committerGötz Lindenmaier <goetz@ipd.info.uni-karlsruhe.de>
Sat, 25 Sep 2004 11:24:03 +0000 (11:24 +0000)
[r3952]

ir/ir/irgopt.c
ir/ir/irgwalk.h
ir/ir/irnode.c
ir/ir/irnode.h

index 32245e5..d914136 100644 (file)
@@ -55,9 +55,9 @@ static void init_link (ir_node *n, void *env) {
 }
 
 #if 0   /* Old version. Avoids Ids.
-       This is not necessary:  we do a postwalk, and get_irn_n
-       removes ids anyways.  So it's much cheaper to call the
-       optimization less often and use the exchange() algorithm. */
+          This is not necessary:  we do a postwalk, and get_irn_n
+          removes ids anyways.  So it's much cheaper to call the
+          optimization less often and use the exchange() algorithm. */
 static void
 optimize_in_place_wrapper (ir_node *n, void *env) {
   int i, irn_arity;
index ddf6ed4..1983be4 100644 (file)
@@ -105,8 +105,7 @@ void all_irg_walk(irg_walk_func *pre, irg_walk_func *post, void *env);
  */
 void cg_walk(irg_walk_func *pre, irg_walk_func *post, void *env);
 
-/**
- * Walks only over Block nodes in the graph.
+/** Walks only over Block nodes in the graph.
  *
  * @param node - the start node
  * @param pre  - walker function, executed before the predecessor of a node are visited
index fd2b945..a446381 100644 (file)
@@ -1158,22 +1158,22 @@ set_Call_type (ir_node *node, type *tp) {
 }
 
 int Call_has_callees(ir_node *node) {
-
+  assert(node && node->op == op_Call);
   return ((get_irg_callee_info_state(get_irn_irg(node)) != irg_callee_info_none) &&
          (node->attr.call.callee_arr != NULL));
 }
 
 int get_Call_n_callees(ir_node * node) {
-  assert(node->op == op_Call && node->attr.call.callee_arr);
+  assert(node && node->op == op_Call && node->attr.call.callee_arr);
   return ARR_LEN(node->attr.call.callee_arr);
 }
 
 entity * get_Call_callee(ir_node * node, int pos) {
-  assert(node->op == op_Call && node->attr.call.callee_arr);
+  assert(pos >= 0 && pos < get_Call_n_callees(node));
   return node->attr.call.callee_arr[pos];
 }
 
-void set_Call_callee_arr(ir_node * node, int n, entity ** arr) {
+void set_Call_callee_arr(ir_node * node, const int n, entity ** arr) {
   assert(node->op == op_Call);
   if (node->attr.call.callee_arr == NULL || get_Call_n_callees(node) != n) {
     node->attr.call.callee_arr = NEW_ARR_D(entity *, current_ir_graph->obst, n);
index d2a3e66..9fd194b 100644 (file)
@@ -221,9 +221,7 @@ new_ir_node (dbg_info *db,
 /** This works for all except Block.  To express the difference to
  * access routines that work for all nodes we use infix "nodes" and do not
  * name this function get_irn_block. */
-#define get_nodes_block get_nodes_Block
 ir_node  *get_nodes_block (ir_node *node);
-#define set_nodes_block set_nodes_Block
 void      set_nodes_block (ir_node *node, ir_node *block);
 
 /**
@@ -470,16 +468,29 @@ void     set_Call_type (ir_node *node, type *tp);
 /** Gets the arity of a call. Identical to get_Call_n_params(). */
 int      get_Call_arity (ir_node *node);
 
-/* Set, get and remove the callee-analysis.
-   The array is only accessible if information is valid.
-   It contains NULL for called methods that are not within
-   the compilation unit. */
+/** Set, get and remove the callee information for a Call node.
+ *
+ *  The callee information lists all method entities that can be called
+ *  from this node.  If the address expression can not be analyzed fully,
+ *  e.g., as there are external methods that could be called, the array
+ *  contains a single NULL entry.
+ *
+ *  The array is only accessible if callee information is valid.  See flag
+ *  in graph.
+ *
+ *  The memory allocated for the array is managed automatically, i.e., it must
+ *  not be freed if the Call node is removed from the graph.
+ *
+ *  @param node A Call node.
+ */
 int     Call_has_callees      (ir_node *node);
-int     get_Call_n_callees    (ir_node * node);
-entity *get_Call_callee       (ir_node * node, int pos);
-/* assumes current_ir_graph set properly! */
-void    set_Call_callee_arr   (ir_node * node, int n, entity ** arr);
-void    remove_Call_callee_arr(ir_node * node);
+int     get_Call_n_callees    (ir_node *node);
+entity *get_Call_callee       (ir_node *node, int pos);
+/** Set the full callee array.
+ *
+ *  The passed array is copied. Assumes current_ir_graph set properly! */
+void    set_Call_callee_arr   (ir_node *node, const int n, entity **arr);
+void    remove_Call_callee_arr(ir_node *node);
 
 ir_node  *get_CallBegin_ptr  (ir_node *node);
 void      set_CallBegin_ptr  (ir_node *node, ir_node *ptr);
@@ -502,10 +513,21 @@ void     set_FuncCall_type (ir_node *node, type *tp);
 /** Gets the arity of a func call. Identical to get_FuncCall_n_params(). */
 int      get_FuncCall_arity (ir_node *node);
 
-/* Set, get and remove the callee-analysis.
-   The array is only accessible if information is valid.
-   It contains NULL for called methods that are not within
-   the compilation unit. */
+/** Set, get and remove the callee information for a Call node.
+ *
+ *  The callee information lists all method entities that can be called
+ *  from this node.  If the address expression can not be analyzed fully,
+ *  e.g., as there are external methods that could be called, the array
+ *  contains a single NULL entry.
+ *
+ *  The array is only accessible if callee information is valid.  See flag
+ *  in graph.
+ *
+ *  The memory allocated for the array is managed automatically, i.e., it must
+ *  not be freed if the Call node is removed from the graph.
+ *
+ *  @param node A FuncCall node.
+ */
 int     FuncCall_has_callees      (ir_node *node);
 int     get_FuncCall_n_callees    (ir_node * node);
 entity *get_FuncCall_callee       (ir_node * node, int pos);