/* { dg-do compile } */ /* { dg-options "-O2 -fgnu89-inline" } */ typedef struct { } spinlock_t; struct list_head { struct list_head *next, *prev; }; struct __wait_queue_head { spinlock_t lock; struct list_head task_list; }; typedef struct __wait_queue_head wait_queue_head_t; static inline void init_waitqueue_head(wait_queue_head_t *q) { q->lock = (spinlock_t) { }; do { (&q->task_list)->next = (&q->task_list); (&q->task_list)->prev = (&q->task_list); } while (0); } struct timer_list { void (*function)(unsigned long); }; struct rpc_task { struct timer_list tk_timer; wait_queue_head_t tk_wait; }; static void rpc_run_timer(struct rpc_task *task) { } inline void rpc_init_task(struct rpc_task *task) { task->tk_timer.function = (void (*)(unsigned long)) rpc_run_timer; init_waitqueue_head(&task->tk_wait); }