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.