Fortran: NULL pointer dereference in invalid simplification [PR106985]

gcc/fortran/ChangeLog:

	PR fortran/106985
	* expr.cc (gfc_simplify_expr): Avoid NULL pointer dereference.

gcc/testsuite/ChangeLog:

	PR fortran/106985
	* gfortran.dg/pr106985.f90: New test.
This commit is contained in:
Harald Anlauf 2022-09-20 22:23:43 +02:00
parent c77f556741
commit 8dbb15bc2d
2 changed files with 10 additions and 1 deletions

View file

@ -2287,7 +2287,8 @@ gfc_simplify_expr (gfc_expr *p, int type)
initialization expression, or we want a subsection. */
if (p->symtree->n.sym->attr.flavor == FL_PARAMETER
&& (gfc_init_expr_flag || p->ref
|| p->symtree->n.sym->value->expr_type != EXPR_ARRAY))
|| (p->symtree->n.sym->value
&& p->symtree->n.sym->value->expr_type != EXPR_ARRAY)))
{
if (!simplify_parameter_variable (p, type))
return false;

View file

@ -0,0 +1,8 @@
! { dg-do compile }
! PR fortran/106985 - ICE in gfc_simplify_expr
! Contributed by G.Steinmetz
program p
integer, parameter :: a(2) = 1
integer, parameter :: b = a(2) + b ! { dg-error "before its definition is complete" }
end