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

--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:4615cde5d7ef281d4b554df411f82ad707f0a54d

commit r11-6456-g4615cde5d7ef281d4b554df411f82ad707f0a54d
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Tue Jan 5 10:57:52 2021 +0100

    simplify-rtx: Optimize (x - 1) * y + y [PR98334]

    We don't try to optimize for signed x, y (int) (x - 1U) * y + y
    into x * y, we can't do that with signed x * y, because the former
    is well defined for INT_MIN and -1, while the latter is not.
    We could perhaps optimize it during isel or some very late optimization
    where we'd turn magically flag_wrapv, but we don't do that yet.

    This patch optimizes it in simplify-rtx.c, such that we can optimize
    it during combine.

    2021-01-05  Jakub Jelinek  <ja...@redhat.com>

            PR rtl-optimization/98334
            * simplify-rtx.c (simplify_context::simplify_binary_operation_1):
            Optimize (X - 1) * Y + Y to X * Y or (X + 1) * Y - Y to X * Y.

            * gcc.target/i386/pr98334.c: New test.

Reply via email to