I have encountered a strange error raised by
ifort -check shape with
ifort (IFORT) 2021.2.0 20210228. Here is a minimal working example.
! testshape.f90 program testshape implicit none integer :: a(1, 2) a(:, :) = a(:, :) ! This line is OK. Benchmark for the erroneous line. a(:, 1:2) = a(:, 1:2) ! This line is OK. Benchmark for the erroneous line. a(:, [1, 2]) = a(:, [1, 2]) ! Do nothing ..., but it triggers the error. end program testshape
Name this code as
testshape.f90, and then compile it. Here is what happens on my machine (Ubuntu 20.04).
$ ifort -check shape testshape.f90 testshape.f90(7): error #5581: Shape mismatch: The extent of dimension 1 of array A is 1 and the corresponding extent of array <RHS expression> is 2 a(:, [1, 2]) = a(:, [1, 2]) ! Do nothing ..., but it triggers the error. ^ compilation aborted for testshape.f90 (code 1)
If we remove
-check shape or replace it with
-warn shape, then everything works.
Did I misunderstand array indexing or miscalculate something in the code? Thank you for your attention.