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

     1  #include <stdlib.h>
     2  
     3  struct {
     4      long sqlcode;
     5  } sqlca;
     6  
     7  
     8  struct data_record {
     9      int dummy;
    10      int a[100];
    11  } *data_ptr, data_tmp;
    12  
    13  
    14  int
    15  num_records()
    16  {
    17      return 1;
    18  }
    19  
    20  
    21  void
    22  fetch()
    23  {
    24      static int fetch_count;
    25  
    26      memset(&data_tmp, 0x55, sizeof(data_tmp));
    27      sqlca.sqlcode = (++fetch_count > 1 ? 100 : 0);
    28  }
    29  
    30  
    31  void
    32  load_data() {
    33      struct data_record *p;
    34      int num = num_records();
    35  
    36      data_ptr = malloc(num * sizeof(struct data_record));
    37      memset(data_ptr, 0xaa, num * sizeof(struct data_record));
    38  
    39      fetch();
    40      p = data_ptr;
    41      while (sqlca.sqlcode == 0) {
    42          *p++ = data_tmp;
    43          fetch();
    44      }
    45  }
    46  
    47  
    48  main()
    49  {
    50      load_data();
    51      if (sizeof (int) == 2 && data_ptr[0].dummy != 0x5555)
    52        abort ();
    53      else if (sizeof (int) > 2 && data_ptr[0].dummy != 0x55555555)
    54        abort ();
    55      exit (0);
    56  }