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

--- Comment #13 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Here is a x86_64-linux-gnu testcase:
```
#include <stdio.h>

typedef __int128_t mytype;
#define value (((__int128_t)(((unsigned long long)__LONG_LONG_MAX__)+1)) |
(((__int128_t)0xffffffffffffffffull)<<64))

mytype func(long arg) __attribute__((noinline,noclone));
mytype func(long arg) {
   mytype val = 0;
   if (arg < 0) {
    // __int128_t t = 0x8000000000000000ull |
(((__int128_t)0xffffffffffffffff)<<64);
      val = value;
   }
   return val;
}

int main() {
   mytype result = func(-1);
   if (result != value) {
      printf("failed.\n");
      return 1;
   } 
   printf("passed.\n");
   return 0;
}
```

It failed until GCC 4.9.0

Reply via email to