modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/20021204-1.c (about)

     1  /* This test was miscompiled when using sibling call optimization,
     2     because X ? Y : Y - 1 optimization changed X into !X in place
     3     and haven't reverted it if do_store_flag was successful, so
     4     when expanding the expression the second time it was
     5     !X ? Y : Y - 1.  */
     6  
     7  extern void abort (void);
     8  extern void exit (int);
     9  
    10  void foo (int x)
    11  {
    12    if (x != 1)
    13      abort ();
    14  }
    15  
    16  int z;
    17  
    18  int main (int argc, char **argv)
    19  {
    20    char *a = "test";
    21    char *b = a + 2;
    22  
    23    foo (z > 0 ? b - a : b - a - 1);
    24    exit (0);
    25  }