Следующий код Fortran генерирует ошибку сегментации при компиляции с ifort версии 19.0.3.199 без оптимизации (-O0
) на SLES 15:
program test_prg
call sub1()
contains
subroutine sub1(opt)
integer, allocatable, optional :: opt(:)
call sub2(opt)
end subroutine
subroutine sub2(opt)
integer, optional :: opt(:)
end subroutine
end program
Я не собираюсь размещать opt
в sub2
, поэтому я не указывал там атрибут allocatable
. Если я сделаю его доступным для обеих подпрограмм или необязательным, или если я передам фактический аргумент в вызове sub1
, то код завершится без ошибок. Тот же код также отлично работает при компиляции с помощью gfortran из gcc версии 8.3.0 20190222.
Это ошибка компилятора или я здесь что-то незаконно делаю?