* 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>
/**
* 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. */
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. */
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.
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);
}
#endif
-#endif /* _IRNODE_H_ */
+#endif /* _FIRM_IR_IRNODE_H_ */