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

Ivan Sorokin <vanyacpp at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |vanyacpp at gmail dot com

--- Comment #1 from Ivan Sorokin <vanyacpp at gmail dot com> ---
GCC does the optimization if the return from the function is replaced with
__builtin_unreachable:

unsigned n1, n2;

void func1(unsigned a)
{
    if (a <= 10 || a >= 20)
        __builtin_unreachable();

    n1 = a + a;
    n2 = (a + a)/a;
}

func1(unsigned int):
        mov     DWORD PTR n2[rip], 2
        add     edi, edi
        mov     DWORD PTR n1[rip], edi
        ret

https://godbolt.org/z/Tjsz6neTs

Perhaps this issue has the same underlying cause as the PR80015.

Reply via email to