Fortran: Fix ICE after error regression [PR99060].

2021-02-11  Paul Thomas  <pault@gcc.gnu.org>

gcc/fortran
	PR fortran/99060
	* primary.c (gfc_match_varspec): Test for non-null 'previous'
	before using its name in the error message.

gcc/testsuite/
	PR fortran/99060
	* gfortran.dg/pr99060.f90: New test.
This commit is contained in:
Paul Thomas 2021-02-11 10:38:23 +00:00
parent 2e9dfa4bff
commit 5ee5415af8
2 changed files with 18 additions and 4 deletions

View File

@ -2407,11 +2407,15 @@ gfc_match_varspec (gfc_expr *primary, int equiv_flag, bool sub_flag,
component = NULL;
if (intrinsic && !inquiry)
{
gfc_error ("%qs at %C is not an inquiry reference to an intrinsic "
"type component %qs", name, previous->name);
{
if (previous)
gfc_error ("%qs at %C is not an inquiry reference to an intrinsic "
"type component %qs", name, previous->name);
else
gfc_error ("%qs at %C is not an inquiry reference to an intrinsic "
"type component", name);
return MATCH_ERROR;
}
}
else if (component == NULL && !inquiry)
return MATCH_ERROR;

View File

@ -0,0 +1,10 @@
! { dg-do compile }
!
! Test the fix for PR99060 in which the expression caused an ICE after the error.
!
! Contributed by Gerhard Steinmetz <gscfq@t-online.de>
!
program p
real :: a
print *, a%kind%n ! { dg-error "not an inquiry reference" }
end