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

            Bug ID: 66182
           Summary: Unneeded temporary for elemental functions of function
                    results
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: tkoenig at gcc dot gnu.org
  Target Milestone: ---

ig25@linux-fd1f:~/Krempel/Assign> cat matmul.f90
program main
  complex, dimension(3,3) :: a,b,c
  real, dimension(3,3) :: ar, ai, br, bi
  call random_number(ar)
  call random_number(ai)
  call random_number(br)
  call random_number(bi)
  a = ar + (0.,1.)*ai
  b = br + (0.,1.)*bi
  c = conjg(matmul(a,b))
  print *,c
end program main

ig25@linux-fd1f:~/Krempel/Assign> gfortran -Warray-temporaries matmul.f90
matmul.f90:10:12:

   c = conjg(matmul(a,b))
            1
Warning: Creating array temporary at (1) [-Warray-temporaries]

This should be replaced by

  c = matmul(a,b)
  c = conjg(c)

Reply via email to