X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firnode.c;h=e1c3f2ea4550157b8935e4fbeb8536d6814eb5f3;hb=560ed5a4e3236d933413ad4863c123d77c807429;hp=e3830af891232081ca3a4c800b759feadaf62a27;hpb=69bc79c78e8571f4ba51db0382977e196b18e561;p=libfirm diff --git a/ir/ir/irnode.c b/ir/ir/irnode.c index e3830af89..e1c3f2ea4 100644 --- a/ir/ir/irnode.c +++ b/ir/ir/irnode.c @@ -108,7 +108,7 @@ unsigned firm_add_node_size = 0; /* 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) @@ -131,8 +131,8 @@ init_irnode(void) { * 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; @@ -655,7 +655,6 @@ int get_irn_pred_pos(ir_node *node, ir_node *arg) { 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); } @@ -871,6 +870,22 @@ ir_graph *get_Block_irg(const ir_node *block) { 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); @@ -1169,6 +1184,16 @@ set_SymConst_symbol(ir_node *node, union symconst_symbol sym) { 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); @@ -1700,6 +1725,18 @@ set_Load_volatility(ir_node *node, ir_volatility volatility) { 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) { @@ -1749,6 +1786,18 @@ set_Store_volatility(ir_node *node, ir_volatility volatility) { 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) { @@ -2588,11 +2637,46 @@ int 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_Shl)(const ir_node *node) { + return _is_Shl(node); +} + +int +(is_Shr)(const ir_node *node) { + return _is_Shr(node); +} + +int +(is_Shrs)(const ir_node *node) { + return _is_Shrs(node); +} + +int +(is_Rot)(const ir_node *node) { + return _is_Rot(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); @@ -2958,6 +3042,22 @@ ir_op_ops *firm_set_default_get_entity_attr(ir_opcode code, ir_op_ops *ops) { 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);