diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.dg/torture/pr51244-21.c')
-rw-r--r-- | gcc-4.9/gcc/testsuite/gcc.dg/torture/pr51244-21.c | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr51244-21.c b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr51244-21.c new file mode 100644 index 000000000..fbb02db28 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr51244-21.c @@ -0,0 +1,75 @@ +/* { dg-do run } */ +#include <assert.h> + +static inline int +blk_oversized_queue (int* q) +{ + if (q[2]) + return q[1] != 0; + return q[0] == 0; +} + +int __attribute__ ((noinline)) +get_request (int* q, int rw) +{ + if (blk_oversized_queue (q)) + { + if ((rw == 1) || (rw == 0)) + return -33; + + return 0; + } + + return -100; +} + +int main (void) +{ + int x[3]; + int r; + + x[0] = 0; x[1] = 1; x[2] = 1; + r = get_request (x, 0); + assert (r == -33); + + r = get_request (x, 1); + assert (r == -33); + + r = get_request (x, 2); + assert (r == 0); + + + x[0] = 0; x[1] = 0; x[2] = 1; + r = get_request (x, 0); + assert (r == -100); + + r = get_request (x, 1); + assert (r == -100); + + r = get_request (x, 2); + assert (r == -100); + + + x[0] = 0; x[1] = 0; x[2] = 0; + r = get_request (x, 0); + assert (r == -33); + + r = get_request (x, 1); + assert (r == -33); + + r = get_request (x, 2); + assert (r == 0); + + + x[0] = 0; x[1] = 0; x[2] = 0; + r = get_request (x, 0); + assert (r == -33); + + r = get_request (x, 1); + assert (r == -33); + + r = get_request (x, 2); + assert (r == 0); + + return 0; +} |