shouldn't be here anymore
[libfirm] / include / libfirm / irnode.h
index 384c137..5bf8bd2 100644 (file)
@@ -174,6 +174,8 @@ void set_irn_n(ir_node *node, int n, ir_node *in);
  * @returns   the number of the new input
  */
 int add_irn_n(ir_node *node, ir_node *in);
+/* Remove predecessor i from Sync n */
+void del_Sync_n(ir_node *n, int i);
 /* Sets the mode struct of node.  */
 void set_irn_mode(ir_node *node, ir_mode *mode);
 /** Gets the mode struct of a node.  */
@@ -403,6 +405,8 @@ ir_extblk *get_Block_extbb(const ir_node *block);
 void set_Block_extbb(ir_node *block, ir_extblk *extblk);
 /** Get the Macro Block header of a (sub-) block. */
 ir_node *get_Block_MacroBlock(const ir_node *block);
+/** Set the Macro Block header of a (sub-) block. */
+void set_Block_MacroBlock(ir_node *block, ir_node *mbh);
 /** Get the Macro Block header of a node. */
 ir_node *get_irn_MacroBlock(const ir_node *n);
 /** Returns the ir_graph this Block belongs to. */
@@ -413,6 +417,10 @@ int has_Block_label(const ir_node *block);
 ir_label_t get_Block_label(const ir_node *block);
 /** Sets a label to a block. */
 void set_Block_label(ir_node *block, ir_label_t label);
+/** Gets the head of the Phi list for this block. */
+ir_node *get_Block_phis(const ir_node *block);
+/** Sets the head of the Phi list for this block. */
+void set_Block_phis(ir_node *block, ir_node *phi);
 
 /** Return the number of Keep alive node. */
 int  get_End_n_keepalives(const ir_node *end);
@@ -759,6 +767,7 @@ ir_node *get_Div_mem(const ir_node *node);
 void     set_Div_mem(ir_node *node, ir_node *mem);
 ir_mode *get_Div_resmode(const ir_node *node);
 void     set_Div_resmode(ir_node *node, ir_mode *mode);
+int      is_Div_remainderless(const ir_node *node);
 
 /**
  * Projection numbers for Div: use for Proj nodes!
@@ -924,6 +933,8 @@ ir_node **get_Phi_preds_arr(ir_node *node);
 int       get_Phi_n_preds(const ir_node *node);
 ir_node  *get_Phi_pred(const ir_node *node, int pos);
 void      set_Phi_pred(ir_node *node, int pos, ir_node *pred);
+ir_node  *get_Phi_next(const ir_node *phi);
+void      set_Phi_next(ir_node *phi, ir_node *next);
 
 ir_node  *get_Filter_pred(ir_node *node);
 void      set_Filter_pred(ir_node *node, ir_node *pred);
@@ -1214,8 +1225,8 @@ ir_node *skip_Tuple(ir_node *node);
 ir_node *skip_Cast(ir_node *node);
 /** Returns operand of node if node is a Confirm */
 ir_node *skip_Confirm(ir_node *node);
-/** Skip all high-level Operations. */
-ir_node *skip_HighLevel(ir_node *node);
+/** Skip all high-level Operations (including Cast, Confirm). */
+ir_node *skip_HighLevel_ops(ir_node *node);
 /** Returns true if irn is a Const node. */
 int      is_Const(const ir_node *node);
 /** Returns true if a node is a Conv node. */
@@ -1232,6 +1243,8 @@ int      is_NoMem(const ir_node *node);
 int      is_Start(const ir_node *node);
 /** Returns true if node is a Minus node. */
 int      is_Minus(const ir_node *node);
+/** Returns true if node is a Abs node. */
+int      is_Abs(const ir_node *node);
 /** Returns true if node is a Mod node. */
 int      is_Mod(const ir_node *node);
 /** Returns true if node is a Div node. */
@@ -1264,6 +1277,8 @@ int      is_Rot(const ir_node *node);
 int      is_Psi(const ir_node *node);
 /** Returns true if node is a Tuple node. */
 int      is_Tuple(const ir_node *node);
+/** Returns true if node is a Bound node. */
+int      is_Bound(const ir_node *node);
 /** Returns true if the node is not a Block */
 int      is_no_Block(const ir_node *node);
 /** Returns true if the node is a Block */
@@ -1398,6 +1413,12 @@ cond_jmp_predicate get_Cond_jmp_pred(const ir_node *cond);
 /** Sets a new conditional jump prediction. */
 void set_Cond_jmp_pred(ir_node *cond, cond_jmp_predicate pred);
 
+/** Checks whether a node represents a global address. */
+int is_Global(const ir_node *node);
+
+/* Returns the entity of a global address. */
+ir_entity *get_Global_entity(const ir_node *node);
+
 /**
  * Access custom node data.
  * The data must have been registered with