X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fopt%2Fconvopt.c;h=7a10068f5b606d67bc33b9862b2dcde7f9631b1e;hb=3398ae4a8b3cbf66cb0b274ddcd85a2ea863ece1;hp=1935475f4e1f2c0ded105efaf63e2717b3ffae10;hpb=43d2b5ffb6cd35bd55d184e8d6a8aa4bc4a63beb;p=libfirm diff --git a/ir/opt/convopt.c b/ir/opt/convopt.c index 1935475f4..7a10068f5 100644 --- a/ir/opt/convopt.c +++ b/ir/opt/convopt.c @@ -77,7 +77,7 @@ static bool is_optimizable_node(const ir_node *node) } } -static tarval* conv_const_tv(const ir_node* cnst, ir_mode* dest_mode) +static ir_tarval* conv_const_tv(const ir_node* cnst, ir_mode* dest_mode) { return tarval_convert_to(get_Const_tarval(cnst), dest_mode); } @@ -174,11 +174,11 @@ static ir_node *place_conv(ir_node *node, ir_mode *dest_mode) static ir_node *conv_transform(ir_node *node, ir_mode *dest_mode) { ir_mode *mode = get_irn_mode(node); + ir_graph *irg = get_irn_irg(node); size_t arity; size_t conv_arity; size_t i; ir_node *new_node; - ir_graph *irg; ir_node **ins; if (mode == dest_mode) @@ -186,11 +186,11 @@ static ir_node *conv_transform(ir_node *node, ir_mode *dest_mode) if (is_Const(node)) { /* TODO tarval module is incomplete and can't convert floats to ints */ - tarval *tv = conv_const_tv(node, dest_mode); + ir_tarval *tv = conv_const_tv(node, dest_mode); if (tv == tarval_bad) { return place_conv(node, dest_mode); } else { - return new_Const(tv); + return new_r_Const(irg, tv); } } @@ -224,7 +224,6 @@ static ir_node *conv_transform(ir_node *node, ir_mode *dest_mode) // We want to create a new node with the right mode arity = get_irn_arity(node); - irg = get_irn_irg(node); ins = ALLOCAN(ir_node *, arity); // The shift count does not participate in the conv optimisation @@ -256,19 +255,6 @@ static ir_node *conv_transform(ir_node *node, ir_mode *dest_mode) return new_node; } -/* TODO, backends (at least ia32) can't handle it at the moment, - and it's probably not more efficient on most archs */ -#if 0 -static void try_optimize_cmp(ir_node *node) -{ - ir_node *left = get_Cmp_left(node); - ir_node *right = get_Cmp_right(node); - ir_node *conv = NULL; - - if (is_downconv -} -#endif - static void conv_opt_walker(ir_node *node, void *data) { ir_node *transformed; @@ -276,14 +262,7 @@ static void conv_opt_walker(ir_node *node, void *data) ir_mode *pred_mode; ir_mode *mode; int costs; - bool *changed = data; - -#if 0 - if (is_Cmp(node)) { - try_optimize_cmp(node); - return; - } -#endif + bool *changed = (bool*)data; if (!is_Conv(node)) return;