modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/pr49279.c (about)

     1  /* PR tree-optimization/49279 */
     2  extern void abort (void);
     3  
     4  struct S { int a; int *__restrict p; };
     5  
     6  __attribute__((noinline, noclone))
     7  struct S *bar (struct S *p)
     8  {
     9    struct S *r;
    10    asm volatile ("" : "=r" (r) : "0" (p) : "memory");
    11    return r;
    12  }
    13  
    14  __attribute__((noinline, noclone))
    15  int
    16  foo (int *p, int *q)
    17  {
    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];
    26  }
    27  
    28  int
    29  main ()
    30  {
    31    int a, b;
    32    if (foo (&a, &b) != 1)
    33      abort ();
    34    return 0;
    35  }