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

--- Comment #5 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <[email protected]>:

https://gcc.gnu.org/g:867f777cee9f44027a3724fbad266c5cfb3a311f

commit r16-4218-g867f777cee9f44027a3724fbad266c5cfb3a311f
Author: Jakub Jelinek <[email protected]>
Date:   Sat Oct 4 17:06:16 2025 +0200

    widening_mul: Reset flow sensitive info in maybe_optimize_guarding_check
[PR122104]

    In PR95852 I've added an optimization where next to just pattern
    recognizing r = x * y; r / x != y or r = x * y; r / x == y
    as .MUL_OVERFLOW or negation thereof it also recognizes
    r = x * y; x && (r / x != y) or r = x * y; !x || (r / x == y)
    by optimizing the guarding condition to always true/false.

    The problem with that is that some value ranges recorded for
    the SSA_NAMEs in the formerly conditional, now unconditional
    basic block can be invalid.

    This patch fixes it by calling reset_flow_sensitive_info_in_bb
    if we optimize the guarding condition.

    2025-10-04  Jakub Jelinek  <[email protected]>

            PR tree-optimization/122104
            * tree-ssa-math-opts.cc (maybe_optimize_guarding_check): Call
            reset_flow_sensitive_info_in_bb on bb when optimizing out the
            guarding condition.

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

Reply via email to