Use backtracking in find_original_value() for the flags emitter.
[libfirm] / ir / be / ia32 / ia32_transform.c
index 76ae7d3..7309ca2 100644 (file)
@@ -2223,7 +2223,7 @@ static ir_node *try_create_dest_am(ir_node *node) {
        case iro_Sub:
                op1      = get_Sub_left(val);
                op2      = get_Sub_right(val);
-               if(is_Const(op2)) {
+               if (is_Const(op2) && !mode_is_float(mode)) {
                        ir_fprintf(stderr, "Optimisation warning: not-normalized sub ,C found\n");
                }
                new_node = dest_am_binop(val, op1, op2, mem, ptr, mode,
@@ -3330,7 +3330,8 @@ static ir_node *gen_Conv(ir_node *node) {
                                        switch (get_mode_size_bits(tgt_mode)) {
                                                case 32: float_mantissa = 23 + 1; break; // + 1 for implicit 1
                                                case 64: float_mantissa = 52 + 1; break;
-                                               case 80: float_mantissa = 64 + 1; break;
+                                               case 80:
+                                               case 96: float_mantissa = 64;     break;
                                                default: float_mantissa = 0;      break;
                                        }
                                        if (float_mantissa < int_mantissa) {