#include "begin.h"
#include "nodeops.h"
+ENUM_BITSET(pn_Cmp)
+
/**
* @defgroup ir_node Declarations of an ir node.
*
FIRM_API void set_irn_mode(ir_node *node, ir_mode *mode);
/** Gets the mode struct of a node. */
FIRM_API ir_mode *get_irn_mode(const ir_node *node);
-/** Gets the ident for a string representation of the mode .*/
-FIRM_API ident *get_irn_modeident(const ir_node *node);
-/** Gets the string representation of the mode .*/
-FIRM_API const char *get_irn_modename(const ir_node *node);
/** Gets the opcode struct of the node. */
FIRM_API ir_op *get_irn_op(const ir_node *node);
/** Sets the opcode struct of the node. */
/** Sets the Block of a node. */
FIRM_API void set_nodes_block (ir_node *node, ir_node *block);
-/**
- * Return the MacroBlock the node belongs to. This is only
- * possible for pinned nodes or if the graph is in pinned state.
- * Otherwise the MacroBlock may be incorrect. This condition is
- * now checked by an assertion.
- *
- * This works for all except Block. It can return Blocks or the Bad node.
- *
- * To express the difference to access routines that work for all
- * nodes we use infix "nodes" and do not name this function
- * get_irn_MacroBlock(). */
-FIRM_API ir_node *get_nodes_MacroBlock(const ir_node *node);
-
/** Test whether arbitrary node is frame pointer.
*
* Test whether arbitrary node is frame pointer, i.e. Proj(pn_Start_P_frame_base)
FIRM_API ir_extblk *get_Block_extbb(const ir_node *block);
/** Sets the extended basic block a block belongs to. */
FIRM_API void set_Block_extbb(ir_node *block, ir_extblk *extblk);
-/** Get the Macro Block header of a (sub-) block. */
-FIRM_API ir_node *get_Block_MacroBlock(const ir_node *block);
-/** Set the Macro Block header of a (sub-) block. */
-FIRM_API void set_Block_MacroBlock(ir_node *block, ir_node *mbh);
-/** Get the Macro Block header of a node. */
-FIRM_API ir_node *get_irn_MacroBlock(const ir_node *n);
/** Returns the ir_graph this Block belongs to. */
FIRM_API ir_graph *get_Block_irg(const ir_node *block);
/** Returns non-zero if the block has an entity assigned */
/** Returns true if node is a SymConst node with kind symconst_addr_ent. */
FIRM_API int is_SymConst_addr_ent(const ir_node *node);
-/** Returns the source language type of a Const node.
- * Must be an atomic type. Mode of type must be mode of node.
- */
-FIRM_API ir_type *get_Const_type(const ir_node *node);
-
-/** Sets the source language type of a Const node. */
-FIRM_API void set_Const_type(ir_node *node, ir_type *tp);
-
/** Returns non-zero if s symconst kind has a type attribute */
#define SYMCONST_HAS_TYPE(kind) ((kind) <= symconst_type_align)
FIRM_API void set_SymConst_symbol(ir_node *node,
union symconst_symbol sym);
-/** Access the type of the value represented by the SymConst.
- *
- * Example: primitive type int for SymConst size. */
-FIRM_API ir_type *get_SymConst_value_type(const ir_node *node);
-FIRM_API void set_SymConst_value_type(ir_node *node, ir_type *tp);
-
FIRM_API ir_node **get_Sel_index_arr(ir_node *node);
FIRM_API int get_Sel_n_indexs(const ir_node *node);
FIRM_API ir_node *get_Sel_index(const ir_node *node, int pos);
FIRM_API void set_Sync_pred(ir_node *node, int pos, ir_node *pred);
FIRM_API 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.
- */
-FIRM_API ir_type *get_Proj_type(const ir_node *node);
-
/** Return the projection number of a Proj node. */
FIRM_API long get_Proj_proj(const ir_node *node);
FIRM_API void set_Proj_proj(ir_node *node, long proj);
+FIRM_API pn_Cmp get_Proj_pn_cmp(const ir_node*);
/**
* Returns non-zero if a node is a routine parameter.
*/
FIRM_API void copy_node_attr(ir_graph *irg, const ir_node *old_node, ir_node *new_node);
-/** Return the type associated with the value produced by n
- * if the node remarks this type as it is the case for
- * Cast, Const, SymConst and some Proj nodes or unknown_type. */
-FIRM_API ir_type *get_irn_type(ir_node *n);
-
/** Return the type attribute of a node n (SymConst, Call, Alloc, Free,
Cast) or NULL.*/
FIRM_API ir_type *get_irn_type_attr(ir_node *n);
/** Returns non-zero for constant-like nodes. */
FIRM_API int is_irn_constlike(const ir_node *node);
-/**
- * Returns non-zero for nodes that must be always optimized
- * (Phi, Id. Proj, Cond, Block, Confirm ...).
- */
-FIRM_API int is_irn_always_opt(const ir_node *node);
-
/**
* Returns non-zero for nodes that are allowed to have keep-alives and
* are neither Block nor PhiM.