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.

Reply via email to