Quantcast
Channel: Intel® Fortran Compiler
Viewing all articles
Browse latest Browse all 3270

Bug with USE renaming, inlining, and optimization report

$
0
0

I believe I found a bug with the Intel 15.0 compiler where a USE-renamed subroutine shows up in the optimization report under the USE-renamed name, rather than the subroutine's actual name.  I'm not sure if this is the compiler's intended behavior, but it seems unnecessarily confusing.  Consider the code:

! Compile with:
!   ifort -O3 -openmp -openmp-report bug.f90

module mod
  implicit none
  public

contains

subroutine sub(array)
  real :: array(42)
  integer :: i

  !$omp parallel do private(i)
  do i = 1, 42
    array(i) = 42.0
  end do
  !$omp end parallel do
end subroutine

end module


program bug
  use mod, use_renamed_sub => sub
  implicit none

  real :: array(42)

  call use_renamed_sub(array)
end program

 

Compiled as stated in the comment above, this produces the following optimization report:

Begin optimization report for: BUG

    Report from: OpenMP optimizations [openmp]

OpenMP Construct at bug.f90(14,9) inlined into bug.f90(30,8)
   remark #16200: OpenMP DEFINED LOOP WAS PARALLELIZED
===========================================================================

Begin optimization report for: USE_RENAMED_SUB

    Report from: OpenMP optimizations [openmp]

OpenMP Construct at bug.f90(14,9)
   remark #16200: OpenMP DEFINED LOOP WAS PARALLELIZED
===========================================================================

 

The name mentioned in the optimization report is "USE_RENAMED_SUB" rather than the expected "SUB".  I have verified that this occurs only when "SUB" is inlined; if by some means inlining is prevented, then the expected name "SUB" is referenced in the report.

This result was obtained using Intel Fortran 15.0.1 20141022 on Mac OS X 10.10.1.

 

 


Viewing all articles
Browse latest Browse all 3270

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>