On 18/01/16 11:31, Andreas Schwab wrote:
Jeff Law <l...@redhat.com> writes:
commit 1384b36abcd52a7ac72ca6538afa2aed2e04f8e0
Author: Jeff Law <l...@tor.usersys.redhat.com>
Date: Fri Jan 15 17:15:24 2016 -0500
PR tree-optimization/69270
* tree-ssanames.c (ssa_name_has_boolean_range): Moved here from
tree-ssa-dom.c. Improve test for [0..1] ranve from VRP.
* tree-ssa-dom.c (ssa_name_has_boolean_range): Remove.
* tree-ssanames.h (ssa_name_has_boolean_range): Prototype.
* tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
ssa_name_has_boolean_range and constant_boolean_node.
PR tree-optimization/69270
* gcc.dg/tree-ssa/pr69270-2.c: New test.
* gcc.dg/tree-ssa/pr69270-3.c: New test.
This breaks gcc.target/aarch64/tst_3.c.
//.tune generic
.type f1, %function
f1:
- tst x0, 1
- csinc w0, w0, wzr, eq
+ ands w1, w0, 1
+ csel w0, w1, w0, ne
ret
.size f1, .-f1
The two sequences look equally valid to me.
Instead of doing an and-compare followed by a conditional increment
we do an and-compare followed by a conditional select (without discarding
the result of the and).
So the testcase should be adjusted.
I'll do it.
Thanks,
Kyrill
Andreas.