https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110252
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- smallest testcase: ``` signed char f() __attribute__((__noipa__)); signed char f() { return 0; } int main() { int g = f() - 1; int e = g < 0 ? 1 : ((g >> (8-2))!=0); asm("":"+r"(e)); if (e != 1) __builtin_abort(); } ``` Note I changed 6 to 8-2 as it better explains what is going on and why 6 is the one needed here. Second the 239 is just changed over to -1 as it just needs any subtraction. third is j is inlined and the != is moved over to the conditional expression. 4th and not least, removed all of the pointers and just changed over to using inline-asm to hide the range of e at the if statement.