gfortran-4.9(及更高版本)中的错误?

时间:2019-03-04 08:45:43

标签: fortran gfortran

我认为我在gfortran-4.9和更高版本中发现了一个错误。当您有一个具有某些名称的模块(将其命名为init)并且它使用具有别名子例程或具有相同名称(init)的函数的模块时,就会发生这种情况-请参见下面的代码。

当我尝试使用较新版本的gfortran(在我的情况下为gfortran-5.3)编译旧代码时遇到了它。我尝试使用旧版本进行编译,结果发现这发生在gfortran-4.9中,而不是在gfortran-4.7中。然后,我还使用了gfortran的较新版本,而我可以获得的最新版本是8.1。该错误也发生在其中。

那么,我应该报告此错误吗?或者它甚至不是错误,而是我不知道的新的fortran标准的一部分?另外,如果这是一个bug,有人可以尝试使用gfortran-9编译下面的代码,看看它是否仍然存在。

再现该错误的代码:

!------the part below could be the contents of another file -----    
module mod
  implicit none
contains
  subroutine init
    write(*,*) "Hello!"
  end subroutine init
end module mod

module test_mod
  use mod, only : test_init => init
end module test_mod
!-----------------------------------------------------

module init ! the name of the module (init) is the same as the name of
            ! aliased subroutine in used module (test_mod)
  use test_mod
  implicit none
contains
  subroutine test_sub
    call test_init
  end subroutine test_sub
end module init

program test
  use init
  implicit none
  call test_sub
end program test

编辑:当我在gfortran版本4.9到8.1上编译此代码时,收到以下错误消息

 
call test_init

internal compiler error: in conv_function_val, at fortran/trans-expr.c:3792
Please submit a full bug report,
with preprocessed source if appropriate.
See file:///usr/share/doc/gcc-8/README.Bugs for instructions.

EDIT2:错误报告链接:https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89574。自4.9起,该错误出现在所有版本的gfortran中。

0 个答案:

没有答案