/* { dg-options "-O2" } */ /* { dg-do run } */ static const long long int TagTypeNumber = 0xffff000000000000ll; long long int x; void foo(void) { x = TagTypeNumber + 1; } int main(int argc, char **argv) { if (argc > 0) foo (); if ((x & TagTypeNumber) == TagTypeNumber) { unsigned y = (unsigned)x; __builtin_printf ("v: %u\n", y); if (y != 1) __builtin_abort (); } return 0; }