1 /* { dg-do run } */
2 #include <assert.h>
3
4 static inline int
blk_oversized_queue(int * q)5 blk_oversized_queue (int* q)
6 {
7 if (q[2])
8 return q[1] != 0;
9 return q[0] == 0;
10 }
11
12 int __attribute__ ((noinline))
get_request(int * q,int rw)13 get_request (int* q, int rw)
14 {
15 if (blk_oversized_queue (q))
16 {
17 if ((rw == 1) || (rw == 0))
18 return -33;
19
20 return 0;
21 }
22
23 return -100;
24 }
25
main(void)26 int main (void)
27 {
28 int x[3];
29 int r;
30
31 x[0] = 0; x[1] = 1; x[2] = 1;
32 r = get_request (x, 0);
33 assert (r == -33);
34
35 r = get_request (x, 1);
36 assert (r == -33);
37
38 r = get_request (x, 2);
39 assert (r == 0);
40
41
42 x[0] = 0; x[1] = 0; x[2] = 1;
43 r = get_request (x, 0);
44 assert (r == -100);
45
46 r = get_request (x, 1);
47 assert (r == -100);
48
49 r = get_request (x, 2);
50 assert (r == -100);
51
52
53 x[0] = 0; x[1] = 0; x[2] = 0;
54 r = get_request (x, 0);
55 assert (r == -33);
56
57 r = get_request (x, 1);
58 assert (r == -33);
59
60 r = get_request (x, 2);
61 assert (r == 0);
62
63
64 x[0] = 0; x[1] = 0; x[2] = 0;
65 r = get_request (x, 0);
66 assert (r == -33);
67
68 r = get_request (x, 1);
69 assert (r == -33);
70
71 r = get_request (x, 2);
72 assert (r == 0);
73
74 return 0;
75 }
76