1 /* { dg-do run } */
2 /* { dg-require-effective-target lp64 } */
3 
4 extern void __attribute__ ((noreturn)) abort (void);
5 
6 int __attribute__ ((noinline, noclone))
foo(unsigned long addr)7 foo (unsigned long addr) {
8     unsigned long *p = (unsigned long*)((addr & 0xffff83fffffffff8UL) * 4);
9     unsigned long xxx = (unsigned long)(p + 1);
10     return xxx >= 0x3c000000000UL;
11 }
12 
13 int
main(void)14 main (void)
15 {
16   if (foo (0))
17     abort ();
18   if (foo (0x7c0000000000UL))
19     abort ();
20   if (!foo (0xfc0000000000UL))
21     abort ();
22   return 0;
23 }
24