modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/20050125-1.c (about) 1 /* Verify that the CALL sideeffect isn't optimized away. */ 2 /* Contributed by Greg Parker 25 Jan 2005 <gparker@apple.com> */ 3 4 #include <stdlib.h> 5 #include <stdio.h> 6 7 struct parse { 8 char *next; 9 char *end; 10 int error; 11 }; 12 13 int seterr(struct parse *p, int err) 14 { 15 p->error = err; 16 return 0; 17 } 18 19 void bracket_empty(struct parse *p) 20 { 21 if (((p->next < p->end) && (*p->next++) == ']') || seterr(p, 7)) { } 22 } 23 24 int main(int argc __attribute__((unused)), char **argv __attribute__((unused))) 25 { 26 struct parse p; 27 p.next = p.end = (char *)0x12345; 28 29 p.error = 0; 30 bracket_empty(&p); 31 if (p.error != 7) 32 abort (); 33 34 return 0; 35 }