/* { 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;
}