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