https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122408
Tamar Christina <tnfchris at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Known to fail|14.1.0 |14.3.0
--- Comment #4 from Tamar Christina <tnfchris at gcc dot gnu.org> ---
The original reproducer happens to use values where the conjucate didn't
matter.
A reproducer that works on all platforms is
SUBROUTINE a( j, b, c, d )
!GCC$ ATTRIBUTES noinline :: a
COMPLEX*16 b
COMPLEX*16 c( * ), d( * )
DO k = 1, j
c( k ) = - b * CONJG( d( k ) )
END DO
END
use iso_fortran_env, only: real64, int64
integer, parameter :: e = 1
complex(real64) f, g(e), h(e), i(e)
f = ( 2.0, real64)
g= ( 3.0, real64)
call a(e, f, h, g)
i = - f * conjg(g)
r1 = transfer(h, 0_int64)
r2 = transfer(i, 0_int64)
if (r1 /= r2 ) then
stop 1
end if
end
which can be reproduced with -O2 -march=armv8.3-a