Commit 54e32f9d by Jeff Law Committed by Jeff Law

re PR tree-optimization/69270 (DOM should exploit range information to create more equivalences)

       PR tree-optimization/69270
        * tree-ssa-dom.c (ssa_name_has_boolean_range): If the type has a
        single bit of precision, verify it's also unsigned.
        (record_edge_info): Use constant_boolean_node rather than fold_convert
        to convert boolean_true/boolean_false to the right type.

From-SVN: r232399
parent 3f18cd82
2016-01-14 Jeff Law <law@redhat.com>
PR tree-optimization/69270
* tree-ssa-dom.c (ssa_name_has_boolean_range): If the type has a
single bit of precision, verify it's also unsigned.
(record_edge_info): Use constant_boolean_node rather than fold_convert
to convert boolean_true/boolean_false to the right type.
2016-01-14 Richard Henderson <rth@redhat.com>
PR rtl-opt/69014
......
......@@ -319,8 +319,8 @@ record_conditions (struct edge_info *edge_info, tree cond, tree inverted)
/* Return TRUE is OP, an SSA_NAME has a range of values [0..1], false
otherwise.
This can be because it is a boolean type, any type with
a single bit of precision, or has known range of [0..1]
This can be because it is a boolean type, any unsigned integral
type with a single bit of precision, or has known range of [0..1]
via VRP analysis. */
static bool
......@@ -332,6 +332,7 @@ ssa_name_has_boolean_range (tree op)
/* An integral type with a single bit of precision. */
if (INTEGRAL_TYPE_P (TREE_TYPE (op))
&& TYPE_UNSIGNED (TREE_TYPE (op))
&& TYPE_PRECISION (TREE_TYPE (op)) == 1)
return true;
......@@ -425,10 +426,9 @@ record_edge_info (basic_block bb)
&& ssa_name_has_boolean_range (op0)
&& is_gimple_min_invariant (op1))
{
tree true_val = fold_convert (TREE_TYPE (op0),
boolean_true_node);
tree false_val = fold_convert (TREE_TYPE (op0),
boolean_false_node);
tree true_val = constant_boolean_node (true, TREE_TYPE (op0));
tree false_val = constant_boolean_node (false, TREE_TYPE (op0));
if (code == EQ_EXPR)
{
edge_info = allocate_edge_info (true_edge);
......
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