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

--- Comment #24 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:037fe26ee1ac18581bf0ad646d48591c97d10bd3

commit r11-5648-g037fe26ee1ac18581bf0ad646d48591c97d10bd3
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Wed Dec 2 11:32:19 2020 +0100

    expansion: Further improve double-word modulo, division and divmod
[PR97459]

    The following patch implements what Thomas wrote about, in particular
    that we can handle also double-word divison by the constants for which
    the earlier patch optimized modulo (if it would be otherwise a library
    call) and that we can also easily handle such constants shifted to the
left.
    Unfortunately, seems CSE isn't able to optimize away the two almost
    identical sequences (one to compute remainder, one to compute quotient),
    probably because of the ADD_OVERFLOW introduced jumps, so the patch also
    adjusts expand_DIVMOD.

    2020-12-02  Jakub Jelinek  <ja...@redhat.com>

            PR rtl-optimization/97459
            * optabs.h (expand_doubleword_divmod): Declare.
            * optabs.c (expand_doubleword_divmod): New function.
            (expand_binop): Use it.
            * internal-fn.c (expand_DIVMOD): Likewise.

            * gcc.target/i386/pr97282.c (foo): Use 123456 divisor instead of
            10.
            * gcc.dg/pr97459-1.c (TESTS): Add tests for 10, 12 and
            6144.
            * gcc.dg/pr97459-2.c (TESTS): Likewise.
            * gcc.dg/pr97459-3.c: New test.
            * gcc.dg/pr97459-4.c: New test.
            * gcc.dg/pr97459-5.c: New test.
            * gcc.dg/pr97459-6.c: New test.

Reply via email to