1  /* { dg-do run } */
       2  
       3  enum e1 { A, B };
       4  enum e2 { C, D };
       5  
       6  __attribute__((noinline,noclone))
       7  enum e1 f(unsigned int *p)
       8  {
       9    *(enum e1 *)p = A;
      10    *(enum e2 *)p = D;
      11    return *(enum e1 *)p;
      12  }
      13  
      14  int main()
      15  {
      16    unsigned int storage;
      17  
      18    if (f(&storage) != B)
      19      __builtin_abort();
      20    return 0;
      21  }