Commit 50301115 by Richard Biener

genmatch.c (simplify::for_subst_vec): New member.

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
parent d4b71b95
...@@ -945,7 +945,7 @@ along with GCC; see the file COPYING3. If not see ...@@ -945,7 +945,7 @@ along with GCC; see the file COPYING3. If not see
(if (low >= prec) (if (low >= prec)
(if (op == LROTATE_EXPR || op == RROTATE_EXPR) (if (op == LROTATE_EXPR || op == RROTATE_EXPR)
(op @0 { build_int_cst (TREE_TYPE (@1), low % prec); }) (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); } { build_zero_cst (type); }
(op @0 { build_int_cst (TREE_TYPE (@1), prec - 1); }))) (op @0 { build_int_cst (TREE_TYPE (@1), prec - 1); })))
(op @0 { build_int_cst (TREE_TYPE (@1), low); }))))))) (op @0 { build_int_cst (TREE_TYPE (@1), low); })))))))
...@@ -1955,7 +1955,7 @@ along with GCC; see the file COPYING3. If not see ...@@ -1955,7 +1955,7 @@ along with GCC; see the file COPYING3. If not see
(cmp @0 REAL_CST@1) (cmp @0 REAL_CST@1)
(if (REAL_VALUE_ISNAN (TREE_REAL_CST (@1)) (if (REAL_VALUE_ISNAN (TREE_REAL_CST (@1))
&& (cmp != LTGT_EXPR || ! flag_trapping_math)) && (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); }))) ? false : true, type); })))
/* bool_var != 0 becomes bool_var. */ /* bool_var != 0 becomes bool_var. */
...@@ -2020,6 +2020,8 @@ along with GCC; see the file COPYING3. If not see ...@@ -2020,6 +2020,8 @@ along with GCC; see the file COPYING3. If not see
x = build_real (type, dconst10); x = build_real (type, dconst10);
} }
break; break;
default:
gcc_unreachable ();
} }
} }
(mult (logs { x; }) @0)))) (mult (logs { x; }) @0))))
...@@ -2042,6 +2044,8 @@ along with GCC; see the file COPYING3. If not see ...@@ -2042,6 +2044,8 @@ along with GCC; see the file COPYING3. If not see
x = build_real (type, real_value_truncate (TYPE_MODE (type), x = build_real (type, real_value_truncate (TYPE_MODE (type),
dconst_third ())); dconst_third ()));
break; break;
default:
gcc_unreachable ();
} }
} }
(mult { x; } (logs @0))))) (mult { x; } (logs @0)))))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment