/* { dg-options "-O -fgraphite-identity" } */ #include struct x; typedef struct x **(*a)(struct x *); struct x { union { struct { union { a *i; } l; int s; } y; } e; }; jmp_buf c; void b(struct x *r) { int f; static int w = 0; volatile jmp_buf m; f = (*(((struct x *)r)->e.y.l.i[2]((struct x *)r)))->e.y.s; if (w++ != 0) __builtin_memcpy((char *)m, (const char *)c, sizeof(jmp_buf)); if (setjmp (c) == 0) { int z; for (z = 0; z < 0; ++z) ; } d((const char *)m); }