Баг в gfortran-4.9 (и новее)? - PullRequest
0 голосов
/ 04 марта 2019

Я думаю, что нашел ошибку в gfortran-4.9 и новее.Это происходит, когда у вас есть модуль с некоторым именем (давайте назовем его init), и он использует модуль с псевдонимом подпрограммы или функцию с тем же именем (init) - см. Код ниже.

Я столкнулся с этим при попытке скомпилировать мой старый код с более новой версией gfortran (gfortran-5.3 в моем случае).Я попытался скомпилировать более старые версии и обнаружил, что это происходит в gfortran-4.9, но не в gfortran-4.7.Затем я также использовал более новые версии gfortran, и самая новая версия, которую я мог получить, была 8.1.В этом тоже происходит ошибка.

Итак, я должен сообщить об этой ошибке?Или это даже не ошибка, а часть нового стандарта Фортрана, которого я не знаю?Кроме того, если это ошибка, может кто-нибудь попытаться скомпилировать приведенный ниже код, используя 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. Ошибка появляется во всех версиях gfortran, так как4.9.

...