[Bug c++/123399] [13/14/15/16 Regression] ICE: 'verify_gimple' failed with __sync_val_compare_and_swap and "large" integer cast from pointer since r9-20

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Jan 15 14:47:01 GMT 2026


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

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
For normal ... arguments we add the extra cast though:
#ifdef __SIZEOF_INT128__
typedef __int128 T;
#else
typedef long long T;
#endif

T v = 0;

void baz (int, ...);

void
bar ()
{
  baz (0, (T) "");
}

void
foo ()
{
  __sync_val_compare_and_swap (&v, 0, (T) "");
}
has
baz (0, (T) (long int) "")
but
(void) (__int128) __sync_val_compare_and_swap_16 ((volatile void *) &v, 0,
(__int128 unsigned) (const char *) "")


More information about the Gcc-bugs mailing list