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

     1  void prepare_to_wait (void *, void *, int);
     2  void finish_wait (void *, void *);
     3  extern signed long schedule_timeout (signed long);
     4  struct sock
     5  {
     6    unsigned char skc_state;
     7    void *sk_sleep;
     8    int sk_err;
     9  };
    10  
    11  void
    12  sk_stream_wait_connect (struct sock *sk, long *timeo_p)
    13  {
    14    int done;
    15    int wait;
    16    do
    17      {
    18        if ((1 << sk->skc_state) & ~12)
    19          return;
    20        prepare_to_wait (sk->sk_sleep, &wait, 1);
    21        *(timeo_p) = schedule_timeout (0);
    22        done = !sk->sk_err;
    23        finish_wait (sk->sk_sleep, &wait);
    24      }
    25    while (!done);
    26  }