- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
Compile the following program with ifort 13.1.0.146. 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.
[fortran]
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)
contains
subroutine f(x)
double precision x(:, :, :, :, :)
print *, shape(x(:, :, :, 1, 2))
end subroutine
end program[/fortran]
コピーされたリンク
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
Thanks - I agree that this is a missed opportunity, I have escalated it to the developers as issue DPD200242784.
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
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.
Annalee
