only skip float->float convs
authorMatthias Braun <matze@braunis.de>
Mon, 2 Jun 2008 14:27:59 +0000 (14:27 +0000)
committerMatthias Braun <matze@braunis.de>
Mon, 2 Jun 2008 14:27:59 +0000 (14:27 +0000)
[r19939]

ir/be/ia32/ia32_transform.c

index 2a71df0..011a34f 100644 (file)
@@ -2516,7 +2516,10 @@ static ir_node *gen_normal_Store(ir_node *node)
                /* Convs (and strict-Convs) before stores are unnecessary if the mode
                   is the same. */
                while (is_Conv(val) && mode == get_irn_mode(val)) {
-                       val = get_Conv_op(val);
+                       ir_node *op = get_Conv_op(val);
+                       if (!mode_is_float(get_irn_mode(op)))
+                               break;
+                       val = op;
                }
                new_val = be_transform_node(val);
                if (ia32_cg_config.use_sse2) {