X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firnode.c;h=d44f835bb9cbf2f750307d4612641d0d92d0664e;hb=bbcec654890da41c2299bf3b07d4cb51e9ed48e1;hp=497fa3b0c1431d61260ac7a4f39365f7e64ca55a;hpb=c433f42a558477b4a4b5043ce88c824dd4eec2cc;p=libfirm diff --git a/ir/ir/irnode.c b/ir/ir/irnode.c index 497fa3b0c..d44f835bb 100644 --- a/ir/ir/irnode.c +++ b/ir/ir/irnode.c @@ -571,6 +571,11 @@ divmod_attr *get_irn_divmod_attr(ir_node *node) { return &node->attr.divmod; } +builtin_attr *get_irn_builtin_attr(ir_node *node) { + assert(is_Builtin(node)); + return &node->attr.builtin; +} + void *(get_irn_generic_attr)(ir_node *node) { assert(is_ir_node(node)); return _get_irn_generic_attr(node); @@ -638,16 +643,6 @@ ir_type *is_tls_pointer(const ir_node *n) { return NULL; } -/* Test whether arbitrary node is value arg base, i.e. Proj(pn_Start_P_value_arg_base) - * from Start. If so returns 1, else 0. */ -int is_value_arg_pointer(const ir_node *n) { - if (is_Proj(n) && - (get_Proj_proj(n) == pn_Start_P_value_arg_base) && - is_Start(get_Proj_pred(n))) - return 1; - return 0; -} - /* Returns an array with the predecessors of the Block. Depending on the implementation of the graph data structure this can be a copy of the internal representation of predecessors as well as the internal @@ -1433,9 +1428,20 @@ set_Builtin_type(ir_node *node, ir_type *tp) { const char *get_builtin_kind_name(ir_builtin_kind kind) { #define X(a) case a: return #a + 6; switch (kind) { + X(ir_bk_trap); + X(ir_bk_debugbreak); X(ir_bk_return_address); X(ir_bk_frame_addess); X(ir_bk_prefetch); + X(ir_bk_ffs); + X(ir_bk_clz); + X(ir_bk_ctz); + X(ir_bk_popcount); + X(ir_bk_parity); + X(ir_bk_bswap); + X(ir_bk_inport); + X(ir_bk_outport); + X(ir_bk_inner_trampoline); } return ""; #undef X @@ -2550,10 +2556,8 @@ skip_Tuple(ir_node *node) { ir_node *pred; ir_op *op; - if (!get_opt_normalize()) return node; - restart: - if (get_irn_op(node) == op_Proj) { + if (is_Proj(node)) { pred = get_Proj_pred(node); op = get_irn_op(pred); @@ -2563,9 +2567,8 @@ restart: */ if (op == op_Proj) { /* nested Tuple ? */ pred = skip_Tuple(pred); - op = get_irn_op(pred); - if (op == op_Tuple) { + if (is_Tuple(pred)) { node = get_Tuple_pred(pred, get_Proj_proj(node)); goto restart; }