beinfo: assert() that be_get_info() is not called on Projs.
[libfirm] / ir / opt / fp-vrp.c
index cf2595b..3bee116 100644 (file)
@@ -435,9 +435,9 @@ undefined:
                                                ir_tarval* const rzn = tarval_or(rz, tarval_neg(rz));
                                                // Concatenate safe lower zeroes.
                                                if (tarval_cmp(lzn, rzn) == ir_relation_less) {
-                                                       z = tarval_mul(tarval_eor(lzn, tarval_shl(lzn, get_tarval_one(m))), rzn);
+                                                       z = tarval_mul(tarval_eor(lzn, tarval_shl_unsigned(lzn, 1)), rzn);
                                                } else {
-                                                       z = tarval_mul(tarval_eor(rzn, tarval_shl(rzn, get_tarval_one(m))), lzn);
+                                                       z = tarval_mul(tarval_eor(rzn, tarval_shl_unsigned(rzn, 1)), lzn);
                                                }
                                                o = get_tarval_null(m);
                                        }
@@ -690,8 +690,6 @@ static void apply_result(ir_node* const irn, void* ctx)
                } else if (m == mode_X) {
                        ir_graph* const irg = get_Block_irg(block);
                        if (z == get_tarval_b_true()) {
-                               // Might produce an endless loop, so keep the block.
-                               add_End_keepalive(get_irg_end(irg), block);
                                n = new_r_Jmp(block);
                        } else {
                                n = new_r_Bad(irg, mode_X);
@@ -714,18 +712,14 @@ exchange_only:
                        ir_node*       const r  = get_And_right(irn);
                        bitinfo const* const bl = get_bitinfo(l);
                        bitinfo const* const br = get_bitinfo(r);
-                       if (bl->z == bl->o) {
-                               if (tarval_is_null(tarval_andnot(br->z, bl->z))) {
-                                       DB((dbg, LEVEL_2, "%+F(%+F, %+F) is superfluous\n", irn, l, r));
-                                       exchange(irn, r);
-                                       env->modified = 1;
-                               }
-                       } else if (br->z == br->o) {
-                               if (tarval_is_null(tarval_andnot(bl->z, br->z))) {
-                                       DB((dbg, LEVEL_2, "%+F(%+F, %+F) is superfluous\n", irn, l, r));
-                                       exchange(irn, l);
-                                       env->modified = 1;
-                               }
+                       if (tarval_is_null(tarval_andnot(br->z, bl->o))) {
+                               DB((dbg, LEVEL_2, "%+F(%+F, %+F) is superfluous\n", irn, l, r));
+                               exchange(irn, r);
+                               env->modified = 1;
+                       } else if (tarval_is_null(tarval_andnot(bl->z, br->o))) {
+                               DB((dbg, LEVEL_2, "%+F(%+F, %+F) is superfluous\n", irn, l, r));
+                               exchange(irn, l);
+                               env->modified = 1;
                        }
                        break;
                }
@@ -757,18 +751,14 @@ exchange_only:
                        ir_node*       const r  = get_Or_right(irn);
                        bitinfo const* const bl = get_bitinfo(l);
                        bitinfo const* const br = get_bitinfo(r);
-                       if (bl->z == bl->o) {
-                               if (tarval_is_null(tarval_andnot(bl->o, br->o))) {
-                                       DB((dbg, LEVEL_2, "%+F(%+F, %+F) is superfluous\n", irn, l, r));
-                                       exchange(irn, r);
-                                       env->modified = 1;
-                               }
-                       } else if (br->z == br->o) {
-                               if (tarval_is_null(tarval_andnot(br->o, bl->o))) {
-                                       DB((dbg, LEVEL_2, "%+F(%+F, %+F) is superfluous\n", irn, l, r));
-                                       exchange(irn, l);
-                                       env->modified = 1;
-                               }
+                       if (tarval_is_null(tarval_andnot(bl->z, br->o))) {
+                               DB((dbg, LEVEL_2, "%+F(%+F, %+F) is superfluous\n", irn, l, r));
+                               exchange(irn, r);
+                               env->modified = 1;
+                       } else if (tarval_is_null(tarval_andnot(br->z, bl->o))) {
+                               DB((dbg, LEVEL_2, "%+F(%+F, %+F) is superfluous\n", irn, l, r));
+                               exchange(irn, l);
+                               env->modified = 1;
                        }
 
                        /* if each bit is guaranteed to be zero on either the left or right
@@ -797,7 +787,6 @@ static void queue_users(pdeq* const q, ir_node* const n)
                /* When the state of a control flow node changes, not only queue its
                 * successor blocks, but also the Phis in these blocks, because the Phis
                 * must reconsider this input path. */
-               ir_edge_t const* e;
                foreach_out_edge(n, e) {
                        ir_node*  const  src = get_edge_src_irn(e);
                        pdeq_putr(q, src);
@@ -809,7 +798,6 @@ static void queue_users(pdeq* const q, ir_node* const n)
                        }
                }
        } else {
-               ir_edge_t const* e;
                foreach_out_edge(n, e) {
                        ir_node* const src = get_edge_src_irn(e);
                        if (get_irn_mode(src) == mode_T) {