Fixed typos, improved docu
[libfirm] / ir / ir / irnode.h
index d327f51..033a736 100644 (file)
@@ -9,8 +9,8 @@
  * Copyright:   (c) 1998-2003 Universität Karlsruhe
  * Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
  */
-#ifndef _IRNODE_H_
-#define _IRNODE_H_
+#ifndef _FIRM_IR_IRNODE_H_
+#define _FIRM_IR_IRNODE_H_
 
 #include <stddef.h>
 
@@ -105,9 +105,19 @@ void          set_irn_in            (ir_node *node, int arity, ir_node *in[]);
 /**
  * Get the n-th predecessor of a node.
  * This function removes Id predecessors.
+ * This function automatically handles intra- and interprocedural views.
  */
 ir_node      *get_irn_n             (const ir_node *node, int n);
+
+/**
+ * Get the n-th predecessor of a node in intraprocedural view.
+ * Can be used always if it's know that node is not a split one.
+ */
 ir_node      *get_irn_intra_n       (const ir_node *node, int n);
+
+/**
+ * Get the n-th predecessor of a node in interprocedural view.
+ */
 ir_node      *get_irn_inter_n       (const ir_node *node, int n);
 
 /** Replace the n-th predecessor of a node with a new one. */
@@ -132,6 +142,8 @@ opcode        get_irn_opcode        (const ir_node *node);
 const char   *get_irn_opname        (const ir_node *node);
 /** Get the ident for a string representation of the opcode. */
 ident        *get_irn_opident       (const ir_node *node);
+/** If arg is an argument of the node, returns it's position, -1 otherwise */
+int           get_irn_pred_pos      (ir_node *node, ir_node *arg);
 /** Gets the visited counter of a node. */
 unsigned long get_irn_visited (const ir_node *node);
 /** Sets the visited counter of a node. */
@@ -328,6 +340,9 @@ void add_End_keepalive (ir_node *end, ir_node *ka);
 /** Set the Keep alive node at position pos. */
 void set_End_keepalive(ir_node *end, int pos, ir_node *ka);
 
+/** Set new keep-alives */
+void set_End_keepalives(ir_node *end, int n, ir_node *in[]);
+
 /** Some parts of the End node are allocated separately -- their memory
    is not recovered by dead_node_elimination if a End node is dead.
    free_End() frees these data structures. */
@@ -877,6 +892,7 @@ ir_node **get_Sync_preds_arr (ir_node *node);
 int       get_Sync_n_preds (ir_node *node);
 ir_node  *get_Sync_pred (ir_node *node, int pos);
 void      set_Sync_pred (ir_node *node, int pos, ir_node *pred);
+void      add_Sync_pred (ir_node *node, ir_node *pred);
 
 /** Returns the source language type of a Proj node.
  * Must be an atomic type.  Mode of type must be mode of node.
@@ -1051,6 +1067,12 @@ int      is_Call (const ir_node *node);
 int      is_Sel (const ir_node *node);
 /** returns true if node is a Mux node or a Psi with only one condition. */
 int      is_Mux (const ir_node *node);
+/** returns true if node is a Load node. */
+int      is_Load (const ir_node *node);
+/** returns true if node is a Sync node. */
+int      is_Sync (const ir_node *node);
+/** returns true if node is a Confirm node. */
+int      is_Confirm (const ir_node *node);
 /** returns true if node is a Proj node or a Filter node in
  * intraprocedural view */
 int      is_Proj (const ir_node *node);
@@ -1162,6 +1184,12 @@ unsigned register_additional_node_data(unsigned size);
  */
 void *get_irn_generic_attr(ir_node *node);
 
+/**
+ * Returns the unique node index for the node in its graph.
+ * This index is used to access phase information for this node.
+ */
+unsigned get_irn_idx(const ir_node *node);
+
 /*-----------------------------------------------------------------*/
 /** Debug aides                                                   **/
 /*-----------------------------------------------------------------*/
@@ -1224,4 +1252,4 @@ int dump_node_opcode(FILE *F, ir_node *n);
 }
 #endif
 
-#endif /* _IRNODE_H_ */
+#endif /* _FIRM_IR_IRNODE_H_ */