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

Alexander Monakov <amonakov at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |amonakov at gcc dot gnu.org

--- Comment #3 from Alexander Monakov <amonakov at gcc dot gnu.org> ---
I tried to make an equivalent C testcase, but complex ops don't map 1:1 from
Fortran, so it's a bit difficult. Nevertheless, here's a somewhat similar
testcase that aborts on 8/9, works on trunk, but IR and resulting assembly look
quite different:

( needs -O2 -ftree-vectorize -mfma -fcx-limited-range )

__attribute__((noipa))
static
_Complex double
test(_Complex double * __restrict a,
     _Complex double * __restrict x,
     _Complex double t, long jx)
{
    long i, j;

    for (j = 6, i = 3; i>=0; i--, j-=jx)
        x[j] -= t*a[i];

    return x[4];
}

int main()
{
    _Complex double a[5] = {1, 1, 1, 1, 10};
    _Complex double x[9] = {1,1,1,1,1,1,1,1,1};
    if (test(a, x, 1, 2))
        __builtin_abort();
}

Reply via email to