(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.c-torture/
execute/
20071018-1.c
       1  extern void abort(void);
       2  
       3  struct foo {
       4    int rank;
       5    char *name;
       6  };
       7  
       8  struct mem {
       9    struct foo *x[4];
      10  };
      11  
      12  void __attribute__((noinline)) bar(struct foo **f)
      13  {
      14    *f = __builtin_malloc(sizeof(struct foo));
      15  }
      16  struct foo * __attribute__((noinline, noclone)) foo(int rank)
      17  {
      18    void *x = __builtin_malloc(sizeof(struct mem));
      19    struct mem *as = x;
      20    struct foo **upper = &as->x[rank * 8 - 5];
      21    *upper = 0;
      22    bar(upper);
      23    return *upper;
      24  }
      25  
      26  int main()
      27  {
      28    if (foo(1) == 0)
      29      abort ();
      30    return 0;
      31  }