Product Version: Intel(R) Visual Fortran Compiler XE 15.0 or a later version
The vectorization report generated when using Visual Fortran Compiler's optimization options ( /O3 /Qopt-report:2 /Qopt-report-phase:vec ) states that loop was not vectorized since loop iteration count cannot be computed before the loop is executed.
An example below will generate the following remark in optimization report:
subroutine foo(a, n) implicit none integer, intent(in) :: n double precision, intent(inout) :: a(n) integer :: bar integer :: i i=0 100 CONTINUE a(i)=0 i=i+1 if (i .lt. bar()) goto 100 end subroutine foo
ifort -c /O3 /Qopt-report:2 /Qopt-report-phase:vec /Qopt-report-file:stdout f15523.f90
Begin optimization report for: FOO
Report from: Vector optimizations [vec]
LOOP BEGIN at f15523.f90(9,8)
remark #15523: loop was not vectorized: loop control variable I was found, but loop iteration count cannot be computed before executing the loop.
-goto statements prevent vectorization. Rewriting the code using 'do - end do'' loops where iteration count is computed before execution of the loop will get this loop vectorized.
Product and Performance Information
Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.