1 /* PR c/80163 */
2 /* { dg-do compile { target int128 } } */
3 /* { dg-require-effective-target label_values } */
4 
5 volatile int v;
6 
7 __attribute__((noinline, noclone)) void
bar(void)8 bar (void)
9 {
10   v++;
11   asm volatile ("" : : : "memory");
12 }
13 
14 __attribute__((noinline, noclone)) __int128_t *
foo(unsigned long ** p)15 foo (unsigned long **p)
16 {
17 a:
18   bar ();
19 b:
20   bar ();
21   static __int128_t d = (unsigned long) &&a - (unsigned long) &&b;
22   static unsigned long e = (unsigned long) &&a - (unsigned long) &&b;
23   *p = &e;
24   return &d;
25 }
26 
27 int
main()28 main ()
29 {
30   __int128_t *p;
31   unsigned long *q;
32   p = foo (&q);
33   if (*p != *q)
34     __builtin_abort ();
35   return 0;
36 }
37