Commit fb42421e by Steven G. Kargl

re PR fortran/71730 (ICE when character length specification uses an undefined variable)

2016-07-30  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/71730
	* decl.c (char_len_param_value): Check return value of
	gfc_reduce_init_expr().

2016-07-30  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/71730
	* gfortran.dg/pr71730.f90: New test.
	* gfortran.dg/bounds_check_strlen_2.f90: Fix invalid code.
	* gfortran.dg/array_constructor_27.f03: Update dg-error message.
	* gfortran.dg/array_constructor_26.f03: Ditto.

From-SVN: r238904
parent 12f549f4
2016-07-30 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/71730
* decl.c (char_len_param_value): Check return value of
gfc_reduce_init_expr().
2016-07-29 Dominik Vogt <vogt@linux.vnet.ibm.com>
* trans-array.c (gfc_conv_array_ref): Fix allocation of diagnostic
......
......@@ -906,6 +906,7 @@ char_len_param_value (gfc_expr **expr, bool *deferred)
goto syntax;
else if ((*expr)->expr_type == EXPR_VARIABLE)
{
bool t;
gfc_expr *e;
e = gfc_copy_expr (*expr);
......@@ -917,7 +918,15 @@ char_len_param_value (gfc_expr **expr, bool *deferred)
&& e->ref->u.ar.dimen_type[0] == DIMEN_RANGE)
goto syntax;
gfc_reduce_init_expr (e);
t = gfc_reduce_init_expr (e);
if (!t && (e->ts.type == BT_UNKNOWN
&& e->symtree->n.sym->attr.untyped == 1
&& e->symtree->n.sym->ns->seen_implicit_none == 1))
{
gfc_free_expr (e);
goto syntax;
}
if ((e->ref && e->ref->type == REF_ARRAY
&& e->ref->u.ar.type != AR_ELEMENT)
......
2016-07-30 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/71730
* gfortran.dg/pr71730.f90: New test.
* gfortran.dg/bounds_check_strlen_2.f90: Fix invalid code.
* gfortran.dg/array_constructor_27.f03: Update dg-error message.
* gfortran.dg/array_constructor_26.f03: Ditto.
2016-07-29 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* g++.dg/pr70098.C: Remove XFAIL for powerpc64_no_dm.
......
......@@ -10,7 +10,6 @@ MODULE WinData
INTEGER (1), PARAMETER :: MAXFLD = 25_1, MAXHED = 5_1, MAXCHR = 80_1
integer :: i
TYPE TWindowData
CHARACTER (MAX_FLD_HED, 1) :: DWFdHd(MAXFLD) = [(" ", i = 1, MAXFLD)]
! { dg-error "specification expression" "" { target *-*-* } 13 }
CHARACTER (MAX_FLD_HED, 1) :: DWFdHd(MAXFLD) = [(" ", i = 1, MAXFLD)] ! { dg-error "Scalar INTEGER expression" }
END TYPE TWindowData
END MODULE WinData
......@@ -8,8 +8,7 @@
implicit none
type t
character (a) :: arr (1) = [ "a" ]
! { dg-error "specification expression" "" { target *-*-* } 11 }
character (a) :: arr (1) = [ "a" ] ! { dg-error "Scalar INTEGER expression" }
end type t
end
......@@ -11,8 +11,8 @@ CONTAINS
SUBROUTINE test (str, n)
IMPLICIT NONE
CHARACTER(len=n) :: str
INTEGER :: n
CHARACTER(len=n) :: str
END SUBROUTINE test
SUBROUTINE test2 (str)
......
! { dg-do compile }
subroutine foo
implicit none
character(len=bar) :: a ! { dg-error "Scalar INTEGER expression" }
end subroutine foo
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment