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

     1  extern void abort (void);
     2  extern void exit (int);
     3  struct s { unsigned char a[256]; };
     4  union u { struct { struct s b; int c; } d; struct { int c; struct s b; } e; };
     5  static union u v;
     6  static union u v0;
     7  static struct s *p = &v.d.b;
     8  static struct s *q = &v.e.b;
     9  
    10  static inline struct s rp (void) { return *p; }
    11  static inline struct s rq (void) { return *q; }
    12  static void pq (void) { *p = rq(); }
    13  static void qp (void) { *q = rp(); }
    14  
    15  static void
    16  init (struct s *sp)
    17  {
    18    int i;
    19    for (i = 0; i < 256; i++)
    20      sp->a[i] = i;
    21  }
    22  
    23  static void
    24  check (struct s *sp)
    25  {
    26    int i;
    27    for (i = 0; i < 256; i++)
    28      if (sp->a[i] != i)
    29        abort ();
    30  }
    31  
    32  void
    33  main_test (void)
    34  {
    35    v = v0;
    36    init (p);
    37    qp ();
    38    check (q);
    39    v = v0;
    40    init (q);
    41    pq ();
    42    check (p);
    43    exit (0);
    44  }