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 / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

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

Retired 12/31/2016

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.


Leave a Comment

Please sign in to add a comment. Not a member? Join today