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

     1  
     2  typedef __SIZE_TYPE__ size_t;
     3  typedef unsigned int index_ty;
     4  typedef index_ty *index_list_ty;
     5  
     6  struct mult_index
     7  {
     8    index_ty index;
     9    unsigned int count;
    10  };
    11  
    12  struct mult_index_list
    13  {
    14    struct mult_index *item;
    15    size_t nitems;
    16    size_t nitems_max;
    17  
    18    struct mult_index *item2;
    19    size_t nitems2_max;
    20  };
    21  
    22  int __attribute__((noinline))
    23  hash_find_entry (size_t *result)
    24  {
    25      *result = 2;
    26      return 0;
    27  }
    28  
    29  extern void abort (void);
    30  struct mult_index * __attribute__((noinline))
    31  foo (size_t n)
    32  {
    33    static count = 0;
    34    if (count++ > 0)
    35      abort ();
    36    return 0;
    37  }
    38  
    39  int
    40  main (void)
    41  {
    42      size_t nitems = 0;
    43  
    44      for (;;)
    45      {
    46          size_t list;
    47  
    48          hash_find_entry (&list);
    49          {
    50              size_t len2 = list;
    51              struct mult_index *destptr;
    52              struct mult_index *dest;
    53              size_t new_max  = nitems + len2;
    54  
    55              if (new_max != len2)
    56                  break;
    57              dest = foo (new_max);
    58  
    59              destptr = dest;
    60              while (len2--)
    61                  destptr++;
    62  
    63              nitems = destptr - dest;
    64          }
    65      }
    66  
    67      return 0;
    68  }