/* { dg-options "-O3 -fgraphite-identity" } */ typedef struct sv TEST_SV; typedef struct av TEST_AV; typedef struct magic TEST_MAGIC; typedef struct xpvav TEST_XPVAV; struct sv { void* sv_any; }; struct av { TEST_XPVAV* sv_any; }; struct xpvav { char* xav_array; long int xav_fill; long int xav_max; }; struct magic { TEST_SV* mg_obj; }; extern TEST_SV PL_sv_undef; Perl_av_fill( register TEST_AV *av, int fill) { TEST_MAGIC *mg; int key = ((TEST_XPVAV*) (av)->sv_any)->xav_fill; TEST_SV** ary = ((TEST_SV**)((TEST_XPVAV*) (av)->sv_any)->xav_array); while (key < fill) ary[++key] = &PL_sv_undef; }