Fixed wrong type cast spotted by the intel compiler in our portale obstack.h.
[libfirm] / include / libfirm / irnode.h
index d837aa6..b1a89a3 100644 (file)
@@ -35,6 +35,8 @@
 #include "begin.h"
 #include "nodeops.h"
 
+ENUM_BITSET(pn_Cmp)
+
 /**
  * @defgroup ir_node Declarations of an ir node.
  *
@@ -152,10 +154,6 @@ FIRM_API void del_Sync_n(ir_node *n, int i);
 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. */
@@ -251,19 +249,6 @@ FIRM_API ir_node *get_nodes_block (const ir_node *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)
@@ -336,12 +321,6 @@ FIRM_API int Block_block_visited(const ir_node *node);
 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 */
@@ -410,14 +389,6 @@ FIRM_API int is_strictConv(const ir_node *node);
 /** 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)
 
@@ -451,12 +422,6 @@ FIRM_API union symconst_symbol get_SymConst_symbol(const ir_node *node);
 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);
@@ -601,14 +566,10 @@ FIRM_API ir_node  *get_Sync_pred(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.
@@ -685,11 +646,6 @@ FIRM_API int is_irn_forking(const ir_node *node);
  */
 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);
@@ -700,12 +656,6 @@ FIRM_API ir_entity *get_irn_entity_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.