remove sel_based_null_check flag
[libfirm] / ir / opt / opt_osr.c
index 1916430..cdab220 100644 (file)
@@ -22,7 +22,6 @@
  * @brief   Operator Strength Reduction.
  * @date    12.5.2006
  * @author  Michael Beck
- * @version $Id$
  * @brief
  *  Implementation of the Operator Strength Reduction algorithm
  *  by Keith D. Cooper, L. Taylor Simpson, Christopher A. Vick.
@@ -46,6 +45,7 @@
 #include "set.h"
 #include "tv.h"
 #include "hashptr.h"
+#include "util.h"
 #include "irtools.h"
 #include "irloop_t.h"
 #include "array.h"
@@ -608,13 +608,12 @@ static int is_counter_iv(ir_node *iv, iv_env *env)
  */
 static int check_users_for_reg_pressure(ir_node *iv, iv_env *env)
 {
-       ir_node    *irn, *header;
+       ir_node    *irn;
        ir_node    *have_user = NULL;
        ir_node    *have_cmp  = NULL;
        node_entry *e         = get_irn_ne(iv, env);
        scc        *pscc      = e->pscc;
 
-       header = e->header;
        for (irn = pscc->head; irn != NULL; irn = e->next) {
                const ir_edge_t *edge;
 
@@ -1156,6 +1155,12 @@ static ir_node *applyOneEdge(ir_node *iv, ir_node *rc, LFTR_edge *e, iv_env *env
                        panic("Unsupported opcode");
                }
 
+               if (tv == tarval_bad || tv_init == tarval_bad) {
+                       tarval_set_integer_overflow_mode(ovmode);
+                       DB((dbg, LEVEL_4, " = OVERFLOW"));
+                       return NULL;
+               }
+
                if (pscc->code == iro_Add) {
                        tv_end = tarval_add(tv, tv_incr);
                } else {
@@ -1165,7 +1170,7 @@ static ir_node *applyOneEdge(ir_node *iv, ir_node *rc, LFTR_edge *e, iv_env *env
 
                tarval_set_integer_overflow_mode(ovmode);
 
-               if (tv == tarval_bad || tv_init == tarval_bad || tv_end == tarval_bad) {
+               if (tv_end == tarval_bad) {
                        DB((dbg, LEVEL_4, " = OVERFLOW"));
                        return NULL;
                }