libcpp, c, middle-end: Optimize initializers using #embed in C
[official-gcc.git] / gcc / testsuite / gcc.dg / ipa / pr103601.c
blob7bdb5e50fbea49056e19160ab0c03d1cad7bb647
1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fgnu89-inline" } */
4 typedef struct { } spinlock_t;
5 struct list_head {
6 struct list_head *next, *prev;
7 };
8 struct __wait_queue_head {
9 spinlock_t lock;
10 struct list_head task_list;
12 typedef struct __wait_queue_head wait_queue_head_t;
13 static inline void init_waitqueue_head(wait_queue_head_t *q)
15 q->lock = (spinlock_t) { };
16 do { (&q->task_list)->next = (&q->task_list); (&q->task_list)->prev = (&q->task_list); } while (0);
18 struct timer_list {
19 void (*function)(unsigned long);
21 struct rpc_task {
22 struct timer_list tk_timer;
23 wait_queue_head_t tk_wait;
25 static void
26 rpc_run_timer(struct rpc_task *task)
29 inline void
30 rpc_init_task(struct rpc_task *task)
32 task->tk_timer.function = (void (*)(unsigned long)) rpc_run_timer;
33 init_waitqueue_head(&task->tk_wait);