[Bug tree-optimization/126470] [15/16/17 Regression] Wrong operand check on a != 0 ? a / b : 0 -> a / b iff b is nonzero fold since r15-307

"cvs-commit at gcc dot gnu.org via Gcc-bugs" <[email protected]>
Newsgroups gmane.comp.gcc.bugs
Message-ID <[email protected]/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126470

--- Comment #4 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Andrea Pinski <[email protected]>:

https://gcc.gnu.org/g:366b7772dd5424bc2b09c0796395d63d22710939

commit r17-2803-g366b7772dd5424bc2b09c0796395d63d22710939
Author: Andrea Pinski <[email protected]>
Date:   Wed Jul 29 16:12:42 2026 -0700

    match: Fix up expr_no_side_effects_p call for `(a != 0) ? (a / b) : 0`
pattern [PR126470]

    r15-3870-g6c5543d3d9c4bb introduced a fix for this pattern
    to use expr_no_side_effects_p but I was testing the wrong
    operand here which allowed b to become unconditional even
    if that expression traps.

    Puhsed as obvious after bootstrap/test on x86_64-linux-gnu.

            PR tree-optimization/126470

    gcc/ChangeLog:

            * match.pd (`(a != 0) ? (a / b) : 0`): Fix argument
            to expr_no_side_effects_p.

    gcc/testsuite/ChangeLog:

            * gcc.dg/torture/pr126470-1.c: New test.

    Signed-off-by: Andrea Pinski <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.