diff options
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/execute/20050125-1.c')
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/20050125-1.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/execute/20050125-1.c b/gcc/testsuite/gcc.c-torture/execute/20050125-1.c new file mode 100644 index 000000000..3dc15b537 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20050125-1.c @@ -0,0 +1,35 @@ +/* Verify that the CALL sideeffect isn't optimized away. */ +/* Contributed by Greg Parker 25 Jan 2005 <gparker@apple.com> */ + +#include <stdlib.h> +#include <stdio.h> + +struct parse { + char *next; + char *end; + int error; +}; + +int seterr(struct parse *p, int err) +{ + p->error = err; + return 0; +} + +void bracket_empty(struct parse *p) +{ + if (((p->next < p->end) && (*p->next++) == ']') || seterr(p, 7)) { } +} + +int main(int argc __attribute__((unused)), char **argv __attribute__((unused))) +{ + struct parse p; + p.next = p.end = (char *)0x12345; + + p.error = 0; + bracket_empty(&p); + if (p.error != 7) + abort (); + + return 0; +} |