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

--- 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:39f5e9aded23e8b7e0e7080fc6020478b9c5b7b5

commit r11-5433-g39f5e9aded23e8b7e0e7080fc6020478b9c5b7b5
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Thu Nov 26 10:50:23 2020 +0100

    match.pd: Avoid ICE with shifts [PR97979]

    My recent wide_int_binop changes caused ICE on this testcase.
    The problem is that for shift where amount has MSB set now fails to
optimize
    into a constant (IMHO we should treat out of bounds shifts the same later),
    but there is a precedent for that already - e.g. division by zero fails
    to optimize into a constant too.  I think it is better if path isolation
    checks for these UBs and does something the user chooses (__builtin_trap
vs.
    __builtin_unreachable, and either a deferred warning about the UB or
    nothing).
    This patch just doesn't optimize if int_const_binop failed.

    2020-11-26  Jakub Jelinek  <ja...@redhat.com>

            PR tree-optimization/97979
            * match.pd ((X {&,^,|} C2) << C1 into (X << C1) {&,^,|} (C2 <<
C1)):
            Only optimize if int_const_binop returned non-NULL.

            * gcc.dg/pr97979.c: New test.
            * gcc.c-torture/compile/pr97979.c: New test.

Reply via email to