Fix unused warnings.
[official-gcc/graphite-test-results.git] / gcc / testsuite / gcc.c-torture / execute / pr45070.c
blob95ff77aa0b0976505b59ac50b8a584575f756a93
1 /* PR45070 */
2 extern void abort(void);
4 struct packed_ushort {
5 unsigned short ucs;
6 } __attribute__((packed));
8 struct source {
9 int pos, length;
10 int flag;
13 static void __attribute__((noinline)) fetch(struct source *p)
15 p->length = 128;
18 static struct packed_ushort __attribute__((noinline)) next(struct source *p)
20 struct packed_ushort rv;
22 if (p->pos >= p->length) {
23 if (p->flag) {
24 p->flag = 0;
25 fetch(p);
26 return next(p);
28 p->flag = 1;
29 rv.ucs = 0xffff;
30 return rv;
32 rv.ucs = 0;
33 return rv;
36 int main(void)
38 struct source s;
39 int i;
41 s.pos = 0;
42 s.length = 0;
43 s.flag = 0;
45 for (i = 0; i < 16; i++) {
46 struct packed_ushort rv = next(&s);
47 if ((i == 0 && rv.ucs != 0xffff)
48 || (i > 0 && rv.ucs != 0))
49 abort();
51 return 0;