tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Reorganize so that it picks up more opportunities to eliminate ABS expressions...
* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Reorganize so that it picks up more opportunities to eliminate ABS expressions or turn them into negations. * gcc.dg/tree-ssa/20040514-2.c: New test. From-SVN: r81853
This commit is contained in:
parent
394ef95eaf
commit
14bc8dc280
@ -1,3 +1,9 @@
|
||||
2004-05-14 Jeff Law <law@redhat.com>
|
||||
|
||||
* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Reorganize
|
||||
so that it picks up more opportunities to eliminate ABS expressions
|
||||
or turn them into negations.
|
||||
|
||||
2004-05-14 Steven Bosscher <stevenb@suse.de>
|
||||
|
||||
* passes.c (rest_of_handle_null_pointer): Remove.
|
||||
|
@ -1,3 +1,7 @@
|
||||
2004-05-14 Jeff Law <law@redhat.com>
|
||||
|
||||
* gcc.dg/tree-ssa/20040514-2.c: New test.
|
||||
|
||||
2004-05-14 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
|
||||
|
||||
* gfortran.fortran-torture/compile/noncontinuation_1.f90: Rename
|
||||
|
15
gcc/testsuite/gcc.dg/tree-ssa/20040514-2.c
Normal file
15
gcc/testsuite/gcc.dg/tree-ssa/20040514-2.c
Normal file
@ -0,0 +1,15 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
int
|
||||
foo2 (distance, i, j)
|
||||
int distance;
|
||||
int i, j;
|
||||
{
|
||||
int t = distance;
|
||||
if (t <= 0)
|
||||
t = ((t) >= 0 ? (t) : -(t));
|
||||
return t;
|
||||
}
|
||||
|
||||
/* There should be no ABS_EXPR. */
|
||||
/* { dg-final { scan-tree-dump-times "ABS_EXPR " 0 "dom3"} } */
|
@ -1826,7 +1826,7 @@ simplify_rhs_and_lookup_avail_expr (struct dom_walk_data *walk_data,
|
||||
|
||||
if (! dummy_cond)
|
||||
{
|
||||
dummy_cond = build (LT_EXPR, boolean_type_node,
|
||||
dummy_cond = build (LE_EXPR, boolean_type_node,
|
||||
op, integer_zero_node);
|
||||
dummy_cond = build (COND_EXPR, void_type_node,
|
||||
dummy_cond, NULL, NULL);
|
||||
@ -1834,7 +1834,7 @@ simplify_rhs_and_lookup_avail_expr (struct dom_walk_data *walk_data,
|
||||
}
|
||||
else
|
||||
{
|
||||
TREE_SET_CODE (TREE_OPERAND (dummy_cond, 0), LT_EXPR);
|
||||
TREE_SET_CODE (TREE_OPERAND (dummy_cond, 0), LE_EXPR);
|
||||
TREE_OPERAND (TREE_OPERAND (dummy_cond, 0), 0) = op;
|
||||
TREE_OPERAND (TREE_OPERAND (dummy_cond, 0), 1)
|
||||
= convert (type, integer_zero_node);
|
||||
@ -1842,6 +1842,26 @@ simplify_rhs_and_lookup_avail_expr (struct dom_walk_data *walk_data,
|
||||
val = simplify_cond_and_lookup_avail_expr (dummy_cond,
|
||||
&bd->avail_exprs,
|
||||
NULL, false);
|
||||
|
||||
if (!val)
|
||||
{
|
||||
TREE_SET_CODE (TREE_OPERAND (dummy_cond, 0), GE_EXPR);
|
||||
TREE_OPERAND (TREE_OPERAND (dummy_cond, 0), 0) = op;
|
||||
TREE_OPERAND (TREE_OPERAND (dummy_cond, 0), 1)
|
||||
= convert (type, integer_zero_node);
|
||||
|
||||
val = simplify_cond_and_lookup_avail_expr (dummy_cond,
|
||||
&bd->avail_exprs,
|
||||
NULL, false);
|
||||
|
||||
if (val)
|
||||
{
|
||||
if (integer_zerop (val))
|
||||
val = integer_one_node;
|
||||
else if (integer_onep (val))
|
||||
val = integer_zero_node;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (val
|
||||
|
Loading…
Reference in New Issue
Block a user