[Bug tree-optimization/107009] [13 Regression] massive unnecessary code blowup in vectorizer
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Sep 26 17:25:25 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107009
--- Comment #10 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Aldy Hernandez <aldyh@gcc.gnu.org>:
https://gcc.gnu.org/g:5e77d4082fa845f1182641a93cfbae71984244d2
commit r13-2880-g5e77d4082fa845f1182641a93cfbae71984244d2
Author: Aldy Hernandez <aldyh@redhat.com>
Date: Fri Sep 23 19:47:19 2022 +0200
Optimize [0 = x & MASK] in range-ops.
For [0 = x & MASK], we can determine that x is ~MASK. This is
something we're picking up in DOM thanks to maybe_set_nonzero_bits,
but is something we should handle natively.
This is a good example of how much easier to maintain the range-ops
entries are versus the ad-hoc pattern matching stuff we had to do
before. For the curious, compare the changes to range-op here,
versus maybe_set_nonzero_bits.
I'm leaving the call to maybe_set_nonzero_bits until I can properly
audit it to make sure we're catching it all in range-ops. It won't
hurt, since both set_range_info() and set_nonzero_bits() are
intersect operations, so we'll never lose information if we do both.
PR tree-optimization/107009
gcc/ChangeLog:
* range-op.cc (operator_bitwise_and::op1_range): Optimize 0 = x &
MASK.
(range_op_bitwise_and_tests): New test.
More information about the Gcc-bugs
mailing list