Undo r16291.
[libfirm] / ir / opt / opt_confirms.c
index 47853dc..861051e 100644 (file)
@@ -184,16 +184,16 @@ int value_not_null(ir_node *n, ir_node **confirm) {
        if (op == op_SymConst && get_SymConst_kind(n) == symconst_addr_ent)
                return 1;
        if (op == op_Const) {
-               tarval *tv = get_Const_tarval(n);
-
-               if (tv != tarval_bad && classify_tarval(tv) != TV_CLASSIFY_NULL)
+               if (!is_Const_null(n))
                        return 1;
        } else {
                for (; is_Confirm(n); n = skip_Cast(get_Confirm_value(n))) {
-                       if (get_Confirm_cmp(n) == pn_Cmp_Lg &&
-                               classify_Const(get_Confirm_bound(n)) == CNST_NULL) {
+                       if (get_Confirm_cmp(n) != pn_Cmp_Lg) {
+                               ir_node *bound = get_Confirm_bound(n);
+                               if (is_Const(bound) && is_Const_null(bound)) {
                                        *confirm = n;
                                        return 1;
+                               }
                        }
                }
        }
@@ -593,7 +593,7 @@ tarval *computed_value_Cmp_Confirm(ir_node *cmp, ir_node *left, ir_node *right,
                /* we want the Confirm on the left side */
                ir_node *t = right;
                right = left;
-               left  = right;
+               left  = t;
 
                pnc = get_inversed_pnc(pnc);
        } else if (! is_Confirm(left)) {