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

     1  /* PR target/70566.  */
     2  
     3  #define NULL 0
     4  
     5  struct mystruct
     6  {
     7    unsigned int f1 : 1;
     8    unsigned int f2 : 1;
     9    unsigned int f3 : 1;
    10  };
    11  
    12  __attribute__ ((noinline)) void
    13  myfunc (int a, void *b)
    14  {
    15  }
    16  __attribute__ ((noinline)) int
    17  myfunc2 (void *a)
    18  {
    19    return 0;
    20  }
    21  
    22  static void
    23  set_f2 (struct mystruct *user, int f2)
    24  {
    25    if (user->f2 != f2)
    26      myfunc (myfunc2 (NULL), NULL);
    27    else
    28      __builtin_abort ();
    29  }
    30  
    31  __attribute__ ((noinline)) void
    32  foo (void *data)
    33  {
    34    struct mystruct *user = data;
    35    if (!user->f2)
    36      set_f2 (user, 1);
    37  }
    38  
    39  int
    40  main (void)
    41  {
    42    struct mystruct a;
    43    a.f1 = 1;
    44    a.f2 = 0;
    45    foo (&a);
    46    return 0;
    47  }