Может ли гфортран выделяться с помощью MOLD или нет? - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь скомпилировать довольно современный код на Фортране для Mac с помощью gfortran.Строки, подобные этой ...

allocate(sce, mold=sct)

получают такие ошибки:

Error: Array specification or array-valued SOURCE= expression required in ALLOCATE statement

Похоже, что gfortran понимает SOURCE, но не MOLD.Тем не менее, мой gfortran недавно:

 gcc version 8.2.0 (MacPorts gcc8 8.2.0_3)

Я видел веб-страницы, на которых утверждается, что gfortran поддерживает MOLD начиная с версии 7. что-то.Так что, безусловно, он должен быть в состоянии сделать это с 8.2.0.Это не правда?Что-то смешное в версии для Mac?Кто-нибудь может подсказать, какая еще проблема может быть?

РЕДАКТИРОВАТЬ: Если кто-то еще там, этот игрушечный код работает нормально:

program awm

integer, dimension(:), allocatable :: sct,sce

integer :: nspec = 100

allocate(sct(nspec))
allocate(sce, mold=sct)

end program

Но когда sct и sce являются производными типами, он разваливается:

program awm

type :: r1d
    real, allocatable :: a(:)
end type

type(r1d), dimension(:), allocatable :: sct,sce

integer :: nspec = 100

allocate(sct(nspec))
do i = 1,nspec
  allocate(sct(i)%a(10))
enddo 
allocate(sce, mold=sct)

end program

Это возвращает ошибку, которую я имел выше.Вы можете подумать, что определение производного типа является странным, даже ненужным.Ну, исходный код, из которого это взято, не мой код, и я не могу его сильно изменить, и на самом деле, эта структура имеет свое применение по причинам, на которые у меня нет времени вдаваться.Спасибо.

1 Ответ

0 голосов
/ 25 января 2019

Я убежден, что это дубликат этой ошибки GCC https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80708 или очень тесно связан.Вы должны ждать исправления.Я оставлю ваш код в комментарии к этой ошибке и не буду открывать новую.

...