https://gcc.gnu.org/bugzilla/show_bug.cgi?id=28794

--- Comment #8 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Andrew Pinski <pins...@gcc.gnu.org>:

https://gcc.gnu.org/g:aadc5c07feb0ab08729ab25d0d896b55860ad9e6

commit r14-3084-gaadc5c07feb0ab08729ab25d0d896b55860ad9e6
Author: Andrew Pinski <apin...@marvell.com>
Date:   Mon Aug 7 00:05:21 2023 -0700

    VR-VALUES [PR28794]: optimize compare assignments also

    This patch fixes the oldish (2006) bug where VRP was not
    optimizing the comparison for assignments while handling
    them for GIMPLE_COND only.
    It just happens to also solves PR 103281 due to allowing
    to optimize `c < 1` to `c == 0` and then we get
    `(c == 0) == c` (which was handled by r14-2501-g285c9d04).

    OK? Bootstrapped and tested on x86_64-linux-gnu with no
    regressions.

            PR tree-optimization/103281
            PR tree-optimization/28794

    gcc/ChangeLog:

            * vr-values.cc
(simplify_using_ranges::simplify_cond_using_ranges_1): Split out
            majority to ...
            (simplify_using_ranges::simplify_compare_using_ranges_1): Here.
            (simplify_using_ranges::simplify_casted_cond): Rename to ...
            (simplify_using_ranges::simplify_casted_compare): This
            and change arguments to take op0 and op1.
            (simplify_using_ranges::simplify_compare_assign_using_ranges_1):
New method.
            (simplify_using_ranges::simplify): For tcc_comparison assignments
call
            simplify_compare_assign_using_ranges_1.
            * vr-values.h (simplify_using_ranges): Add
            new methods, simplify_compare_using_ranges_1 and
simplify_compare_assign_using_ranges_1.
            Rename simplify_casted_cond and simplify_casted_compare and
            update argument types.

    gcc/testsuite/ChangeLog:

            * gcc.dg/tree-ssa/pr103281-1.c: New test.
            * gcc.dg/tree-ssa/vrp-compare-1.c: New test.

Reply via email to