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

     1  /* { dg-require-effective-target alloca } */
     2  /* PR target/78439.  */
     3  
     4  enum demangle_component_type
     5  {
     6    DEMANGLE_COMPONENT_THROW_SPEC
     7  };
     8  struct demangle_component
     9  {
    10    enum demangle_component_type type;
    11    struct
    12    {
    13      struct
    14      {
    15        struct demangle_component *left;
    16        struct demangle_component *right;
    17      };
    18    };
    19  };
    20  
    21  int a, b;
    22  
    23  struct d_info
    24  {
    25    struct demangle_component *comps;
    26    int next_comp;
    27    int num_comps;
    28    struct demangle_component *subs;
    29    int num_subs;
    30    int is_conversion;
    31  };
    32  
    33  void
    34  fn1 (int p1, struct d_info *p2)
    35  {
    36    p2->num_comps = 2 * p1;
    37    p2->next_comp = p2->num_subs = p1;
    38    p2->is_conversion = 0;
    39  }
    40  
    41  int fn3 (int *);
    42  void fn4 (struct d_info *, int);
    43  
    44  void
    45  fn2 ()
    46  {
    47    int c;
    48    struct d_info d;
    49    b = 0;
    50    c = fn3 (&a);
    51    fn1 (c, &d);
    52    struct demangle_component e[d.num_comps];
    53    struct demangle_component *f[d.num_subs];
    54    d.comps = e;
    55    d.subs = (struct demangle_component *) f;
    56    fn4 (&d, 1);
    57  }