Fortran: avoid NULL pointer dereference on missing or bad dummy arguments

gcc/fortran/ChangeLog:

	PR fortran/103609
	* symbol.c (gfc_sym_get_dummy_args): Catch NULL pointer
	dereference.

gcc/testsuite/ChangeLog:

	PR fortran/103609
	* gfortran.dg/pr103609.f90: New test.
This commit is contained in:
Harald Anlauf 2021-12-08 21:14:19 +01:00
parent 7add7f7bb3
commit b77968a705
2 changed files with 18 additions and 0 deletions

View File

@ -5240,6 +5240,9 @@ gfc_sym_get_dummy_args (gfc_symbol *sym)
{
gfc_formal_arglist *dummies;
if (sym == NULL)
return NULL;
dummies = sym->formal;
if (dummies == NULL && sym->ts.interface != NULL)
dummies = sym->ts.interface->formal;

View File

@ -0,0 +1,15 @@
! { dg-do compile }
! PR fortran/103609 - ICE in gfc_sym_get_dummy_args
! Contributed by G.Steinmetz
program p
implicit none
integer :: i
do i = 1, 2
call s
end do
contains
subroutine s
call sub(x) ! { dg-error "has no IMPLICIT type" }
end
end