[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