firmjni does not like two similar enums.
[libfirm] / ir / ir / irnode.h
index e7fcdf6..5a97ff2 100644 (file)
@@ -20,6 +20,7 @@
 # include "irop.h"
 # include "irmode.h"
 # include "type.h"
+# include "irextbb.h"
 # include "dbginfo.h"
 
 /**
@@ -273,6 +274,11 @@ ir_node  *get_Block_cg_cfgpred(ir_node * node, int pos);
 /* frees the memory. */
 void      remove_Block_cg_cfgpred_arr(ir_node * node);
 
+/** returns the extended basic block a block belongs to */
+ir_extblk *get_Block_extbb(const ir_node *block);
+/** sets the extended basic block a block belongs to */
+void set_Block_extbb(ir_node *block, ir_extblk *extblk);
+
 /** Return the number of Keep alive node. */
 int  get_End_n_keepalives(ir_node *end);
 
@@ -449,6 +455,14 @@ void     set_Sel_index (ir_node *node, int pos, ir_node *index);
 entity  *get_Sel_entity (ir_node *node); /* entity to select */
 void     set_Sel_entity (ir_node *node, entity *ent);
 
+/** InstOf access */
+type    *get_InstOf_ent (ir_node *node);
+void    set_InstOf_ent (ir_node *node, type *ent);
+ir_node *get_InstOf_store (ir_node *node);
+void    set_InstOf_store (ir_node *node, ir_node *obj);
+ir_node *get_InstOf_obj (ir_node *node);
+void    set_InstOf_obj (ir_node *node, ir_node *obj);
+
 /**
  * Projection numbers for result of Call node: use for Proj nodes!
  */
@@ -462,6 +476,7 @@ typedef enum {
                  an exception */
   pn_Call_max       = 5   /**< number of projections from a Call */
 } pn_Call;   /* Projection numbers for Call. */
+#define pn_Call_M pn_Call_M_regular
 
 ir_node *get_Call_mem (ir_node *node);
 void     set_Call_mem (ir_node *node, ir_node *mem);
@@ -663,8 +678,15 @@ typedef enum {
 } pn_Cmp;   /* Projection numbers for Cmp */
 /* #define not_mask pn_Cmp_Leg */
 
+/** returns the pnc name from an pnc constant */
 const char *get_pnc_string(int pnc);
+
+/** Calculates the negated (Complement(R)) pnc condition. */
 int         get_negated_pnc(int pnc);
+
+/** Calculates the inversed (R^-1) pnc condition, i.e., "<" --> ">" */
+int         get_inversed_pnc(int pnc);
+
 ir_node *get_Cmp_left (ir_node *node);
 void     set_Cmp_left (ir_node *node, ir_node *left);
 ir_node *get_Cmp_right (ir_node *node);
@@ -840,10 +862,10 @@ void      set_Sync_pred (ir_node *node, int pos, ir_node *pred);
 type     *get_Proj_type (ir_node *node);
 
 /** Return the predecessor of a Proj node. */
-ir_node  *get_Proj_pred (ir_node *node);
+ir_node  *get_Proj_pred (const ir_node *node);
 void      set_Proj_pred (ir_node *node, ir_node *pred);
 /** Return the projection number of a Proj node. */
-long      get_Proj_proj (ir_node *node);
+long      get_Proj_proj (const ir_node *node);
 void      set_Proj_proj (ir_node *node, long proj);
 
 ir_node **get_Tuple_preds_arr (ir_node *node);
@@ -889,6 +911,12 @@ ir_node *skip_Id  (ir_node *node);   /* Same as skip_nop. */
 ir_node *skip_Tuple (ir_node *node);
 /** returns operand of node if node is a Cast */
 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);
+/** returns true if irn is a Const node. */
+int                     is_Const(const ir_node *node);
 /** returns true if node is a Bad node. */
 int      is_Bad    (const ir_node *node);
 /** returns true if the node is not a Block */
@@ -982,7 +1010,11 @@ void    dump_irn(ir_node *n);
 /** Output the firm kind of the node */
 #define DDMK(X)  printf("%s(l.%i) %s: %p\n",                 __MYFUNC__, __LINE__,  print_firm_kind(X), (void *)(X));
 /** Output information about a node */
-#define DDMN(X)  printf("%s(l.%i) %s%s: %ld (%p)\n",         __MYFUNC__, __LINE__,  get_irn_opname(X), get_mode_name(get_irn_mode(X)), get_irn_node_nr(X), (void *)(X))
+
+/*#define DDMN(X)  printf("%s(l.%i) %s%s: %ld (%p)\n",         __MYFUNC__, __LINE__,  get_irn_opname(X), get_mode_name(get_irn_mode(X)), get_irn_node_nr(X), (void *)(X))*/
+int dump_node_opcode(FILE *F, ir_node *n);
+#define DDMN(X)  do { printf("%s(l.%i) ", __MYFUNC__, __LINE__); dump_node_opcode(stdout, X); printf(": %ld (%p)\n", get_irn_node_nr(X), (void *)(X)); } while (0)
+
 /** Output information about a node and its block */
 #define DDMNB(X) printf("%s%s: %ld (in block %ld)\n", get_irn_opname(X),  get_mode_name(get_irn_mode(X)), get_irn_node_nr(X), get_irn_node_nr(get_nodes_block(X)))
 /** Output information about a type */