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

     1  /* { dg-additional-options "-fno-early-inlining -fno-ipa-cp" }  */
     2  struct a {
     3    float *b;
     4  } *a;
     5  struct b {
     6    int *b;
     7  } b;
     8  struct c {
     9    float *b;
    10  } *c;
    11  int d;
    12  use_a (struct a *a)
    13  {
    14  }
    15  set_b (int **a)
    16  {
    17    *a=&d;
    18  }
    19  use_c (struct c *a)
    20  {
    21  }
    22  __attribute__ ((noinline)) int **retme(int **val)
    23  {
    24    return val;
    25  }
    26  int e;
    27  struct b b= {&e};
    28  struct b b2;
    29  struct b b3;
    30  int **ptr = &b2.b;
    31  main ()
    32  {
    33    a= (void *)0;
    34    b.b=&e;
    35    ptr =retme ( &b.b);
    36    set_b (ptr);
    37    b3=b;
    38    if (b3.b != &d)
    39    __builtin_abort ();
    40    c= (void *)0;
    41    return 0;
    42  }