diff options
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/execute/20060910-1.c')
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/20060910-1.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/execute/20060910-1.c b/gcc/testsuite/gcc.c-torture/execute/20060910-1.c new file mode 100644 index 000000000..78bf30139 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20060910-1.c @@ -0,0 +1,37 @@ +/* PR rtl-optimization/28636 */ +/* Origin: Andreas Schwab <schwab@suse.de> */ + +extern void abort(void); + +struct input_ty +{ + unsigned char *buffer_position; + unsigned char *buffer_end; +}; + +int input_getc_complicated (struct input_ty *x) { return 0; } + +int check_header (struct input_ty *deeper) +{ + unsigned len; + for (len = 0; len < 6; len++) + if (((deeper)->buffer_position < (deeper)->buffer_end + ? *((deeper)->buffer_position)++ + : input_getc_complicated((deeper))) < 0) + return 0; + return 1; +} + +struct input_ty s; +unsigned char b[6]; + +int main (void) +{ + s.buffer_position = b; + s.buffer_end = b + sizeof b; + if (!check_header(&s)) + abort(); + if (s.buffer_position != s.buffer_end) + abort(); + return 0; +} |