The following code produces a segmentation fault when compiled with gfortran:
module my_exceptions
implicit none
type::error_container
end type error_container
contains
subroutine throw(status)
type(error_container), intent(out), optional::status
end subroutine throw
subroutine test_throw(status)
class(error_container), intent(out), optional::status
call throw(status)
end subroutine test_throw
end module my_exceptions
program test
use my_exceptions, ONLY: error_container, test_throw
implicit none
type(error_container)::status
call test_throw()
end program test
It appears that gfortran is trying to do something with the status argument even though it is not present. The segmentation fault does not occur if the status is passed to test_throw(). Also, this code works as expected when compiled with ifort. Can anyone help me figure out what causes the segmentation fault?