/* { dg-do run } */ /* { dg-require-effective-target lp64 } */ extern void __attribute__ ((noreturn)) abort (void); int __attribute__ ((noinline, noclone)) foo (unsigned long addr) { unsigned long *p = (unsigned long*)((addr & 0xffff83fffffffff8UL) * 4); unsigned long xxx = (unsigned long)(p + 1); return xxx >= 0x3c000000000UL; } int main (void) { if (foo (0)) abort (); if (foo (0x7c0000000000UL)) abort (); if (!foo (0xfc0000000000UL)) abort (); return 0; }