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

Reply via email to