(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.c-torture/
execute/
20050125-1.c
       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  }