自动分配从整数到真实(DP)时失败



我不知道我是击中编译器错误还是丢失了某些内容。我正在尝试运行以下代码:

program test
  implicit none
  integer, parameter :: dp=kind(1.d0)
  integer,  allocatable :: int_mat(:,:)
  integer,  allocatable :: int_mat_2(:,:)
  real(dp), allocatable :: real_mat(:,:)
  allocate(int_mat(2,2))
  int_mat = 0
  int_mat_2 = int_mat
  real_mat = int_mat ! Falls over here.
end program

使用nagfor (flags: -f2003 -C=all)编译和运行,按预期工作。与gfortran (flags: -std=f2003 -fcheck=all)一起编译和运行,在运行时失败,错误消息:

At line 13 of file test.f90
Fortran runtime error: Array bound mismatch for dimension 1 of array 'real_mat' (1/2)

我希望代码成功,因为int_mat_2real_mat应该被隐式分配。对于int_mat_2,这似乎正确地发生了,但对于real_mat

我已经使用了各种Gfortran版本(5.4、6.3、7.0)尝试了此问题,并且都有相同的问题。

,这是Francescalus发现的,这是该编译器错误,此后已为最近的Gfortran版本修复。

最新更新