X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firnode.c;h=616211ae73a68e9835969df1c4f4cf7c5d6928ca;hb=24feef2f7979015d8064a17cdede5bc6340d0a14;hp=5348ef7a8972c0df4110a460eaada3a571e451a7;hpb=154a5b154fa9962afea127d49baec1f28b4da97e;p=libfirm diff --git a/ir/ir/irnode.c b/ir/ir/irnode.c index 5348ef7a8..616211ae7 100644 --- a/ir/ir/irnode.c +++ b/ir/ir/irnode.c @@ -282,7 +282,7 @@ ir_node * } void -set_irn_n(ir_node *node, int n, ir_node *in) { +set_irn_n (ir_node *node, int n, ir_node *in) { assert(node && node->kind == k_ir_node); assert(-1 <= n); assert(n < get_irn_arity(node)); @@ -316,7 +316,8 @@ set_irn_n(ir_node *node, int n, ir_node *in) { node->in[n + 1] = in; } -int add_irn_n(ir_node *node, ir_node *in) { +int add_irn_n(ir_node *node, ir_node *in) +{ int pos; ir_graph *irg = get_irn_irg(node); @@ -332,21 +333,25 @@ int add_irn_n(ir_node *node, ir_node *in) { } int -(get_irn_deps)(const ir_node *node) { +(get_irn_deps)(const ir_node *node) +{ return _get_irn_deps(node); } ir_node * -(get_irn_dep)(const ir_node *node, int pos) { +(get_irn_dep)(const ir_node *node, int pos) +{ return _get_irn_dep(node, pos); } void -(set_irn_dep)(ir_node *node, int pos, ir_node *dep) { +(set_irn_dep)(ir_node *node, int pos, ir_node *dep) +{ _set_irn_dep(node, pos, dep); } -int add_irn_dep(ir_node *node, ir_node *dep) { +int add_irn_dep(ir_node *node, ir_node *dep) +{ int res = 0; if (node->deps == NULL) { @@ -646,14 +651,17 @@ int get_irn_pred_pos(ir_node *node, ir_node *arg) { /** manipulate fields of individual nodes **/ +/* this works for all except Block */ ir_node * -(get_nodes_block)(const ir_node *node) { - return _get_nodes_block(node); +get_nodes_block(const ir_node *node) { + assert(node->op != op_Block); + return get_irn_n(node, -1); } void set_nodes_block(ir_node *node, ir_node *block) { - node->op->ops.set_block(node, block); + assert(node->op != op_Block); + set_irn_n(node, -1, block); } /* Test whether arbitrary node is frame pointer, i.e. Proj(pn_Start_P_frame_base) @@ -862,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); @@ -1063,8 +1087,16 @@ set_Const_tarval(ir_node *node, tarval *con) { node->attr.con.tv = con; } -cnst_classify_t (classify_Const)(ir_node *node) { - return _classify_Const(node); +int (is_Const_null)(const ir_node *node) { + return _is_Const_null(node); +} + +int (is_Const_one)(const ir_node *node) { + return _is_Const_one(node); +} + +int (is_Const_all_one)(const ir_node *node) { + return _is_Const_all_one(node); } @@ -1160,6 +1192,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); @@ -1429,6 +1471,7 @@ BINOP(Add) BINOP(Sub) UNOP(Minus) BINOP(Mul) +BINOP(Mulh) DIVOP(Quot) DIVOP(DivMod) DIVOP(Div) @@ -1691,6 +1734,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) { @@ -1740,6 +1795,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) { @@ -2589,6 +2656,26 @@ int 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); @@ -2624,6 +2711,11 @@ int return _is_Conv(node); } +int +(is_Cast)(const ir_node *node) { + return _is_Cast(node); +} + int (is_no_Block)(const ir_node *node) { return _is_no_Block(node);