https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77504

--- Comment #14 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
In the dump-tree-original I see

...
        D.3906 = offset.2;
        D.3907 = ubound.0;
        D.3908 = (integer(kind=4)[0:] * restrict) c.data;
        D.3909 = c.offset;
        D.3910 = c.dim[0].lbound;
        D.3911 = c.dim[0].ubound;
        D.3912 = D.3910 + -1;
        {
...
            c.dim[0].lbound = 1;
            c.dim[0].ubound = NON_LVALUE_EXPR <D.3907>;
            c.dim[0].stride = 1;
            c.offset = -NON_LVALUE_EXPR <c.dim[0].lbound>;
            D.3909 = c.offset;
            D.3912 = c.dim[0].lbound + -1;
            c.span = 4;
            D.3921 = MAX_EXPR <(unsigned long) (D.3919 * 4), 1>;
...

i.e., c.offset and c.dim[0].*bound are used before they are set.

Reply via email to