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

     1  void abort(void);
     2  void exit(int);
     3  
     4  void
     5  test1(void)
     6  {
     7    int x = 3, y = 2;
     8  
     9    if ((x < y ? x++ : y++) != 2)
    10      abort ();
    11  
    12    if (x != 3)
    13      abort ();
    14  
    15    if (y != 3)
    16      abort ();
    17  }
    18  
    19  void
    20  test2(void)
    21  {
    22    int x = 3, y = 2, z;
    23  
    24    z = (x < y) ? x++ : y++;
    25    if (z != 2)
    26      abort ();
    27  
    28    if (x != 3)
    29      abort ();
    30  
    31    if (y != 3)
    32      abort ();
    33  }
    34  
    35  void
    36  test3(void)
    37  {
    38    int x = 3, y = 2;
    39    int xx = 3, yy = 2;
    40  
    41    if ((xx < yy ? x++ : y++) != 2)
    42      abort ();
    43  
    44    if (x != 3)
    45      abort ();
    46  
    47    if (y != 3)
    48      abort ();
    49  }
    50  
    51  int x, y;
    52  
    53  static void
    54  init_xy(void)
    55  {
    56    x = 3;
    57    y = 2;
    58  }
    59  
    60  void
    61  test4(void)
    62  {
    63    init_xy();
    64    if ((x < y ? x++ : y++) != 2)
    65      abort ();
    66  
    67    if (x != 3)
    68      abort ();
    69  
    70    if (y != 3)
    71      abort ();
    72  }
    73  
    74  void
    75  test5(void)
    76  {
    77    int z;
    78  
    79    init_xy();
    80    z = (x < y) ? x++ : y++;
    81    if (z != 2)
    82      abort ();
    83  
    84    if (x != 3)
    85      abort ();
    86  
    87    if (y != 3)
    88      abort ();
    89  }
    90  
    91  void
    92  test6(void)
    93  {
    94    int xx = 3, yy = 2;
    95    int z;
    96  
    97    init_xy();
    98    z = (xx < y) ? x++ : y++;
    99    if (z != 2)
   100      abort ();
   101  
   102    if (x != 3)
   103      abort ();
   104  
   105    if (y != 3)
   106      abort ();
   107  }
   108  
   109  int
   110  main(){
   111    test1 ();
   112    test2 ();
   113    test3 ();
   114    test4 ();
   115    test5 ();
   116    test6 ();
   117    exit (0);
   118  }