(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
torture/
20080716-1.c
       1  /* { dg-do run } */
       2  /* { dg-require-effective-target lp64 } */
       3  
       4  typedef unsigned long size_t;
       5  struct tree_base
       6  {
       7    int code;
       8  };
       9  struct tree_decl_minimal
      10  {
      11    struct tree_base base;
      12    const char *name;
      13  };
      14  typedef union tree_node {
      15    struct tree_base base;
      16    struct tree_decl_minimal decl_minimal;
      17  } *tree;
      18  struct tree_overload
      19  {
      20    struct tree_base common;
      21    tree function;
      22  };
      23  typedef struct VEC_tree_base { unsigned num; unsigned alloc; tree vec[1]; } VEC_tree_base;
      24  typedef struct VEC_tree_gc { VEC_tree_base base; } VEC_tree_gc;
      25  static __inline__ unsigned VEC_tree_base_length (const VEC_tree_base *vec_)
      26  { return vec_ ? vec_->num : 0; }
      27  static __inline__ int VEC_tree_base_iterate (const VEC_tree_base *vec_, unsigned ix_, tree *ptr)
      28  {
      29    if (vec_ && ix_ < vec_->num) { *ptr = vec_->vec[ix_]; return 1; } else { *ptr = 0; return 0; }
      30  } 
      31  extern void abort (void);
      32  void __attribute__((noinline)) foo (size_t x)
      33  {
      34    if (x != 18446744073709551614UL)
      35      abort ();
      36  }
      37  void
      38  resort_type_method_vec (VEC_tree_gc *method_vec)
      39  {
      40    int len = (VEC_tree_base_length(((method_vec) ? &(method_vec)->base : 0)));
      41    size_t slot;
      42    tree fn;
      43  
      44    for (slot = 2;
      45         (VEC_tree_base_iterate(((method_vec) ? &(method_vec)->base : 0),slot,&(fn)));
      46         ++slot)
      47      if (!(((((((fn)->base.code) == 225) ? (((struct tree_overload*)(fn))->function) : (fn)))->decl_minimal.name)))
      48        break;
      49  
      50    if (len - slot > 1)
      51      foo (len - slot);
      52  }
      53  
      54  int main ()
      55  {
      56    resort_type_method_vec ((void *)0);
      57    return 0;
      58  }