re PR fortran/67526 (ICE on missing end parenthesis in substring construct)

2015-09-09  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/67526
	* gfortran.dg/pr67526.f90: New test.

2015-09-09  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/67526
	* expr.c (gfc_check_init_expr): Do not dereference a NULL pointer.

From-SVN: r227655
This commit is contained in:
Steven G. Kargl 2015-09-10 18:07:07 +00:00
parent bef83bb27a
commit 6b6c56f1e8
4 changed files with 30 additions and 7 deletions

View File

@ -1,3 +1,8 @@
2015-09-10 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/67526
* expr.c (gfc_check_init_expr): Do not dereference a NULL pointer.
2015-09-04 Manuel López-Ibáñez <manu@gcc.gnu.org> 2015-09-04 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR fortran/67429 PR fortran/67429

View File

@ -2599,6 +2599,8 @@ gfc_check_init_expr (gfc_expr *e)
break; break;
case EXPR_SUBSTRING: case EXPR_SUBSTRING:
if (e->ref)
{
t = gfc_check_init_expr (e->ref->u.ss.start); t = gfc_check_init_expr (e->ref->u.ss.start);
if (!t) if (!t)
break; break;
@ -2606,7 +2608,9 @@ gfc_check_init_expr (gfc_expr *e)
t = gfc_check_init_expr (e->ref->u.ss.end); t = gfc_check_init_expr (e->ref->u.ss.end);
if (t) if (t)
t = gfc_simplify_expr (e, 0); t = gfc_simplify_expr (e, 0);
}
else
t = false;
break; break;
case EXPR_STRUCTURE: case EXPR_STRUCTURE:

View File

@ -1,3 +1,8 @@
2015-09-10 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/67526
* gfortran.dg/pr67526.f90: New test.
2015-09-10 Oleg Endo <olegendo@gcc.gnu.org> 2015-09-10 Oleg Endo <olegendo@gcc.gnu.org>
Backport from mainline Backport from mainline

View File

@ -0,0 +1,9 @@
! { dg-do compile }
! Original code from gerhard dot steinmetz dot fortran at t-online dot de
! PR fortran/67526
program p
character :: c1 = 'abc'(: ! { dg-error "error in SUBSTRING" }
character :: c2 = 'abc'(3: ! { dg-error "error in SUBSTRING" }
character :: c3 = 'abc'(:1 ! { dg-error "error in SUBSTRING" }
character :: c4 = 'abc'(2:2 ! { dg-error "error in SUBSTRING" }
end