re PR fortran/82049 (ICE with character(*),parameter array constructor)

2018-02-06  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/82049
	* match.c (gfc_match_type_spec): If the charlen is non-NULL, then
	try to resolve it.  While here return early if possible.

2018-02-06  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/82049
	* gfortran.dg/assumed_charlen_parameter.f90: New test.

From-SVN: r257459
This commit is contained in:
Steven G. Kargl 2018-02-07 20:43:33 +00:00
parent f320fdfd22
commit 52b16cb3d4
4 changed files with 29 additions and 1 deletions

View file

@ -1,3 +1,9 @@
2018-02-07 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/82049
* match.c (gfc_match_type_spec): If the charlen is non-NULL, then
try to resolve it. While here return early if possible.
2018-02-04 Paul Thomas <pault@gcc.gnu.org>
PR fortran/84115

View file

@ -2054,11 +2054,17 @@ gfc_match_type_spec (gfc_typespec *ts)
{
match m;
locus old_locus;
char name[GFC_MAX_SYMBOL_LEN + 1];
char c, name[GFC_MAX_SYMBOL_LEN + 1];
gfc_clear_ts (ts);
gfc_gobble_whitespace ();
old_locus = gfc_current_locus;
/* If c isn't [a-z], then return immediately. */
c = gfc_peek_ascii_char ();
if (!ISALPHA(c))
return MATCH_NO;
type_param_spec_list = NULL;
if (match_derived_type_spec (ts) == MATCH_YES)
@ -2099,6 +2105,8 @@ gfc_match_type_spec (gfc_typespec *ts)
ts->type = BT_CHARACTER;
m = gfc_match_char_spec (ts);
if (ts->u.cl && ts->u.cl->length)
gfc_resolve_expr (ts->u.cl->length);
if (m == MATCH_NO)
m = MATCH_YES;

View file

@ -1,3 +1,8 @@
2018-02-07 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/82049
* gfortran.dg/assumed_charlen_parameter.f90: New test.
2018-02-07 David Malcolm <dmalcolm@redhat.com>
PR c++/81610

View file

@ -0,0 +1,9 @@
! { dg-do compile }
! PR fortran/82049
! Original code contributed by John Harper <john dot harper at vuw dot ac dot nz>
program ice ! f2003
implicit none
character(*), parameter:: a = 'ice', b = '*'
character(*), parameter:: c(2) = [character(len(a)) :: a, b]
print "(2A4)",adjustr(c)
end program ice