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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |DUPLICATE
             Status|UNCONFIRMED                 |RESOLVED

--- Comment #27 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Sam James from comment #26)
> Reduced:
> ```
> int a, b, c, *d = &a;
> long e;
> static long(am)(long f, int g) { return g == 0 || f == 1 && g == 1 ?: f / g;
> }
> static void aq(unsigned f) {
>   c ^= e = am(~f, 1);
>   b = 7 - (e >= 1) - 33;
>   *d = b;
> }
> int main() {
>   am(1, 1);
>   aq(1);
>   if (a == 0xffffffffffffffe5)
>     ;
>   else
>     __builtin_abort();
> }
> ```

Yes it is the same as PR 118138, we have (long)(~1u) which is incorrectly sign
extending.  PR 118138 has a cleaner comment history so closing this one as a
dup of that.

*** This bug has been marked as a duplicate of bug 118138 ***

Reply via email to