Missed optimization on SHAPE intrinsic

Missed optimization on SHAPE intrinsic

Compile the following program with ifort You would expect the compiler not to create a temporary copy of x(:,:,:,1,2) in subroutine f. But it does. Using UBOUND seems to be a viable workaround.

program test
    double precision, allocatable :: x(:, :, :, :, :)
    double precision y(200, 200, 200, 2, 2)
    integer n1, n2, n3, n4, n5
    read *, n1, n2, n3, n4, n5
    allocate(x(n1, n2, n3, n4, n5))
    call f(x)
    call f(y)
    subroutine f(x)
        double precision x(:, :, :, :, :)
        print *, shape(x(:, :, :, 1, 2))
    end subroutine
end program

3 posts / novo 0
Último post
Para obter mais informações sobre otimizações de compiladores, consulte Aviso sobre otimizações.

Thanks - I agree that this is a missed opportunity, I have escalated it to the developers as issue DPD200242784.

Steve Intel Developer Support

A fix has been found for this issue. We are currently planning to include in the next major release which is currently scheduled for later this year.


Faça login para deixar um comentário.