diff options
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/compile/pr35492.c')
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr35492.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr35492.c b/gcc/testsuite/gcc.c-torture/compile/pr35492.c new file mode 100644 index 000000000..a1681f0a0 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr35492.c @@ -0,0 +1,26 @@ +void prepare_to_wait (void *, void *, int); +void finish_wait (void *, void *); +extern signed long schedule_timeout (signed long); +struct sock +{ + unsigned char skc_state; + void *sk_sleep; + int sk_err; +}; + +void +sk_stream_wait_connect (struct sock *sk, long *timeo_p) +{ + int done; + int wait; + do + { + if ((1 << sk->skc_state) & ~12) + return; + prepare_to_wait (sk->sk_sleep, &wait, 1); + *(timeo_p) = schedule_timeout (0); + done = !sk->sk_err; + finish_wait (sk->sk_sleep, &wait); + } + while (!done); +} |