PR inline-asm/84742
[official-gcc.git] / gcc / testsuite / gcc.c-torture / execute / pr49279.c
blob7f2c0d22129b4869bc73f123edc08097241a590a
1 /* PR tree-optimization/49279 */
2 extern void abort (void);
4 struct S { int a; int *__restrict p; };
6 __attribute__((noinline, noclone))
7 struct S *bar (struct S *p)
9 struct S *r;
10 asm volatile ("" : "=r" (r) : "0" (p) : "memory");
11 return r;
14 __attribute__((noinline, noclone))
15 int
16 foo (int *p, int *q)
18 struct S s, *t;
19 s.a = 1;
20 s.p = p;
21 t = bar (&s);
22 t->p = q;
23 s.p[0] = 0;
24 t->p[0] = 1;
25 return s.p[0];
28 int
29 main ()
31 int a, b;
32 if (foo (&a, &b) != 1)
33 abort ();
34 return 0;