genmatch.c (simplify::for_subst_vec): New member.
authorRichard Biener <rguenth@gcc.gnu.org>
Mon, 3 Aug 2015 13:45:22 +0000 (13:45 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Mon, 3 Aug 2015 13:45:22 +0000 (13:45 +0000)
2015-08-03  Richard Biener  <rguenther@suse.de>

* genmatch.c (simplify::for_subst_vec): New member.
(binary_ok): New helper for for lowering.
(lower_for): Delay substituting operators into result expressions
if we can merge the results eventually again.
(capture_info::walk_result): Adjust for user_id appearing as
result expression operator.
(expr::gen_transform): Likewise.
(dt_simplify::gen_1): Likewise.
(dt_simplify::gen): Pass not substituted operators to tail
functions or initialize local variable with it.
(decision_tree::gen): Adjust function signature.
* match.pd: Fix tests against global code and add default
cases to switch stmts.

From-SVN: r226505

gcc/match.pd

index 80ada214545b82f3f6e01303ff982b2f7433006d..913a1493b5db33cbaa105a2a8a24620ad772e7d1 100644 (file)
@@ -945,7 +945,7 @@ along with GCC; see the file COPYING3.  If not see
      (if (low >= prec)
       (if (op == LROTATE_EXPR || op == RROTATE_EXPR)
        (op @0 { build_int_cst (TREE_TYPE (@1), low % prec); })
-       (if (TYPE_UNSIGNED (type) || code == LSHIFT_EXPR)
+       (if (TYPE_UNSIGNED (type) || op == LSHIFT_EXPR)
         { build_zero_cst (type); }
         (op @0 { build_int_cst (TREE_TYPE (@1), prec - 1); })))
       (op @0 { build_int_cst (TREE_TYPE (@1), low); })))))))
@@ -1955,7 +1955,7 @@ along with GCC; see the file COPYING3.  If not see
   (cmp @0 REAL_CST@1)
   (if (REAL_VALUE_ISNAN (TREE_REAL_CST (@1))
        && (cmp != LTGT_EXPR || ! flag_trapping_math))
-   { constant_boolean_node (cmp == ORDERED_EXPR || code == LTGT_EXPR
+   { constant_boolean_node (cmp == ORDERED_EXPR || cmp == LTGT_EXPR
                            ? false : true, type); })))
 
 /* bool_var != 0 becomes bool_var.  */
@@ -2020,6 +2020,8 @@ along with GCC; see the file COPYING3.  If not see
           x = build_real (type, dconst10);
         }
          break;
+       default:
+        gcc_unreachable ();
        }
      }
     (mult (logs { x; }) @0))))
@@ -2042,6 +2044,8 @@ along with GCC; see the file COPYING3.  If not see
          x = build_real (type, real_value_truncate (TYPE_MODE (type),
                                                    dconst_third ()));
          break;
+       default:
+        gcc_unreachable ();
        }
      }
     (mult { x; } (logs @0)))))