* returns the pnc name from an pnc constant
*/
const char *get_pnc_string(int pnc) {
- assert(pnc >= 0 && pnc < sizeof(pnc_name_arr)/sizeof(pnc_name_arr[0]));
+ assert(pnc >= 0 && pnc <
+ (int) (sizeof(pnc_name_arr)/sizeof(pnc_name_arr[0])));
return pnc_name_arr[pnc];
}
/* register new space for every node */
-unsigned register_additional_node_data(unsigned size) {
+unsigned firm_register_additional_node_data(unsigned size) {
assert(!forbid_new_data && "Too late to register additional node data");
if (forbid_new_data)
* If arity is negative, a node with a dynamic array is created.
*/
ir_node *
-new_ir_node (dbg_info *db, ir_graph *irg, ir_node *block, ir_op *op, ir_mode *mode,
- int arity, ir_node **in)
+new_ir_node(dbg_info *db, ir_graph *irg, ir_node *block, ir_op *op, ir_mode *mode,
+ int arity, ir_node **in)
{
ir_node *res;
size_t node_size = offsetof(ir_node, attr) + op->attr_size + firm_add_node_size;
_set_irn_op(node, op);
}
-ir_opcode
+unsigned
(get_irn_opcode)(const ir_node *node) {
return _get_irn_opcode(node);
}
}
#else
/* Dummies needed for firmjni. */
-struct abstval *get_irn_abst_value(ir_node *n) { return NULL; }
-void set_irn_abst_value(ir_node *n, struct abstval *os) {}
-struct section *firm_get_irn_section(ir_node *n) { return NULL; }
-void firm_set_irn_section(ir_node *n, struct section *s) {}
+struct abstval *get_irn_abst_value(ir_node *n) {
+ (void) n;
+ return NULL;
+}
+void set_irn_abst_value(ir_node *n, struct abstval *os) {
+ (void) n;
+ (void) os;
+}
+struct section *firm_get_irn_section(ir_node *n) {
+ (void) n;
+ return NULL;
+}
+void firm_set_irn_section(ir_node *n, struct section *s) {
+ (void) n;
+ (void) s;
+}
#endif /* DO_HEAPANALYSIS */
#endif
}
-const_attr
+const_attr *
get_irn_const_attr(ir_node *node) {
assert(node->op == op_Const);
- return node->attr.con;
+ return &node->attr.con;
}
long
return node->attr.proj;
}
-alloc_attr
+alloc_attr *
get_irn_alloc_attr(ir_node *node) {
assert(node->op == op_Alloc);
- return node->attr.alloc;
+ return &node->attr.alloc;
}
-free_attr
+free_attr *
get_irn_free_attr(ir_node *node) {
assert(node->op == op_Free);
- return node->attr.free;
+ return &node->attr.free;
}
-symconst_attr
+symconst_attr *
get_irn_symconst_attr(ir_node *node) {
assert(node->op == op_SymConst);
- return node->attr.symc;
+ return &node->attr.symc;
}
ir_type *
return node->attr.call.cld_tp = skip_tid(node->attr.call.cld_tp);
}
-sel_attr
+sel_attr *
get_irn_sel_attr(ir_node *node) {
assert(node->op == op_Sel);
- return node->attr.sel;
+ return &node->attr.sel;
}
int
return node->attr.phi0.pos;
}
-block_attr
+block_attr *
get_irn_block_attr(ir_node *node) {
assert(node->op == op_Block);
- return node->attr.block;
+ return &node->attr.block;
}
-load_attr
+load_attr *
get_irn_load_attr(ir_node *node) {
assert(node->op == op_Load);
- return node->attr.load;
+ return &node->attr.load;
}
-store_attr
+store_attr *
get_irn_store_attr(ir_node *node) {
assert(node->op == op_Store);
- return node->attr.store;
+ return &node->attr.store;
}
-except_attr
+except_attr *
get_irn_except_attr(ir_node *node) {
assert(node->op == op_Div || node->op == op_Quot ||
node->op == op_DivMod || node->op == op_Mod || node->op == op_Call || node->op == op_Alloc);
- return node->attr.except;
+ return &node->attr.except;
}
void *(get_irn_generic_attr)(ir_node *node) {
ir_node *
get_nodes_block(const ir_node *node) {
assert(node->op != op_Block);
- assert(is_irn_pinned_in_irg(node) && "block info may be incorrect");
return get_irn_n(node, -1);
}
return block->attr.block.irg;
}
+int has_Block_label(const ir_node *block) {
+ assert(is_Block(block));
+ return block->attr.block.has_label;
+}
+
+ir_label_t get_Block_label(const ir_node *block) {
+ assert(is_Block(block));
+ return block->attr.block.label;
+}
+
+void set_Block_label(ir_node *block, ir_label_t label) {
+ assert(is_Block(block));
+ block->attr.block.has_label = 1;
+ block->attr.block.label = label;
+}
+
int
get_End_n_keepalives(ir_node *end) {
assert(end->op == op_End);
node->attr.symc.sym = sym;
}
+ir_label_t get_SymConst_label(const ir_node *node) {
+ assert(node->op == op_SymConst && SYMCONST_HAS_LABEL(get_SymConst_kind(node)));
+ return node->attr.symc.sym.label;
+}
+
+void set_SymConst_label(ir_node *node, ir_label_t label) {
+ assert(node->op == op_SymConst && SYMCONST_HAS_LABEL(get_SymConst_kind(node)));
+ node->attr.symc.sym.label = label;
+}
+
ir_type *
get_SymConst_value_type(ir_node *node) {
assert(node->op == op_SymConst);
node->attr.load.volatility = volatility;
}
+ir_align
+get_Load_align(ir_node *node) {
+ assert(node->op == op_Load);
+ return node->attr.load.aligned;
+}
+
+void
+set_Load_align(ir_node *node, ir_align align) {
+ assert(node->op == op_Load);
+ node->attr.load.aligned = align;
+}
+
ir_node *
get_Store_mem(ir_node *node) {
node->attr.store.volatility = volatility;
}
+ir_align
+get_Store_align(ir_node *node) {
+ assert(node->op == op_Store);
+ return node->attr.store.aligned;
+}
+
+void
+set_Store_align(ir_node *node, ir_align align) {
+ assert(node->op == op_Store);
+ node->attr.store.aligned = align;
+}
+
ir_node *
get_Alloc_mem(ir_node *node) {
return _is_Or(node);
}
+int
+(is_Eor)(const ir_node *node) {
+ return _is_Eor(node);
+}
+
int
(is_Sub)(const ir_node *node) {
return _is_Sub(node);
}
+int
+(is_Not)(const ir_node *node) {
+ return _is_Not(node);
+}
+
+int
+(is_Psi)(const ir_node *node) {
+ return _is_Psi(node);
+}
+
int
(is_Tuple)(const ir_node *node) {
return _is_Tuple(node);
/** the get_type operation must be always implemented and return a firm type */
static ir_type *get_Default_type(ir_node *n) {
+ (void) n;
return get_unknown_type();
}
/** the get_type_attr operation must be always implemented */
static ir_type *get_Null_type(ir_node *n) {
+ (void) n;
return firm_unknown_type;
}
/** the get_entity_attr operation must be always implemented */
static ir_entity *get_Null_ent(ir_node *n) {
+ (void) n;
return NULL;
}
return ops;
}
+/* Sets the debug information of a node. */
+void (set_irn_dbg_info)(ir_node *n, dbg_info *db) {
+ _set_irn_dbg_info(n, db);
+}
+
+/**
+ * Returns the debug information of an node.
+ *
+ * @param n The node.
+ */
+dbg_info *(get_irn_dbg_info)(const ir_node *n) {
+ return _get_irn_dbg_info(n);
+}
+
+
+
#ifdef DEBUG_libfirm
void dump_irn(ir_node *n) {
int i, arity = get_irn_arity(n);