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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Just a random thought, if the expander can figure out that
u64_1 / 0xffff0000ffffffe7ULL
is in the range of [0, 1] and expand the division as
(u64_1 >= 0xffff0000ffffffe7ULL),
why the expansion of
u64_1 % 0xffff0000ffffffe7ULL
still performs the multiplication, i.e.
u64_1 - (u64_1 >= 0xffff0000ffffffe7ULL) * 0xffff0000ffffffe7ULL
?  Wouldn't it be usually better to do:
res = u64_1;
if (u64_1 >= 0xffff0000ffffffe7ULL) res -= 0xffff0000ffffffe7ULL;
?  Stage1 material of course.

Reply via email to