Early *ping*.
> Gesendet: Sonntag, 11. Oktober 2020 um 21:09 Uhr > Von: "Harald Anlauf" <anl...@gmx.de> > An: "fortran" <fort...@gcc.gnu.org>, "gcc-patches" <gcc-patches@gcc.gnu.org> > Betreff: [PATCH] PR libfortran/97063 - Wrong result for vector (step size is > negative) * matrix > > PR libfortran/97063 - Wrong result for vector (step size is negative) * matrix > Dear all, > > when matrix-multiplying rank-1 times rank-2 arrays, a wrong result was > produced when a negative stride was used for the rank-1 array. In that > case special code for rank-2 times rank-2 was erroneously executed. > We should never have gotten there, so move the check for rank-1 of the > first argument before that case. > > The patch looks horrendously large because it consists essentially of > regenerated code (nearly 99%). > > Regtests cleanly on x86_64-pc-linux-gnu. > > OK for master? And backport to all open branches where it applies? > > Thanks, > Harald > > > The MATMUL intrinsic provided a wrong result for rank-1 times rank-2 array > when a negative stride was used for addressing the elements of the rank-1 > array, because a check on strides was erroneously placed before the check > on the rank. Interchange order of checks. > > libgfortran/ChangeLog: > > * m4/matmul_internal.m4: Move check for rank-1 times rank-2 before > checks on strides for rank-2 times rank-2. > * generated/matmul_c10.c: Regenerated. > * generated/matmul_c16.c: Likewise. > * generated/matmul_c4.c: Likewise. > * generated/matmul_c8.c: Likewise. > * generated/matmul_i1.c: Likewise. > * generated/matmul_i16.c: Likewise. > * generated/matmul_i2.c: Likewise. > * generated/matmul_i4.c: Likewise. > * generated/matmul_i8.c: Likewise. > * generated/matmul_r10.c: Likewise. > * generated/matmul_r16.c: Likewise. > * generated/matmul_r4.c: Likewise. > * generated/matmul_r8.c: Likewise. > * generated/matmulavx128_c10.c: Likewise. > * generated/matmulavx128_c16.c: Likewise. > * generated/matmulavx128_c4.c: Likewise. > * generated/matmulavx128_c8.c: Likewise. > * generated/matmulavx128_i1.c: Likewise. > * generated/matmulavx128_i16.c: Likewise. > * generated/matmulavx128_i2.c: Likewise. > * generated/matmulavx128_i4.c: Likewise. > * generated/matmulavx128_i8.c: Likewise. > * generated/matmulavx128_r10.c: Likewise. > * generated/matmulavx128_r16.c: Likewise. > * generated/matmulavx128_r4.c: Likewise. > * generated/matmulavx128_r8.c: Likewise. > > gcc/testsuite/ChangeLog: > > * gfortran.dg/matmul_20.f90: New test. > >