Commit d46e0870 by Jerry DeLisle

re PR fortran/32928 (DATA statement with array element as initializer is rejected)

2007-11-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/32928
	* decl.c (match_data_constant): Use gfc_match_init_expr to match the
	array spec and set the initializer expression.

From-SVN: r130484
parent f69ab0e0
2007-11-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/32928
* decl.c (match_data_constant): Use gfc_match_init_expr to match the
array spec and set the initializer expression.
2007-11-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/34227
* match.c (gfc_match_common): Add additional check for BLOCK DATA.
......
......@@ -370,6 +370,30 @@ match_data_constant (gfc_expr **result)
else if (sym->attr.flavor == FL_DERIVED)
return gfc_match_structure_constructor (sym, result);
/* Check to see if the value is an initialization array expression. */
if (sym->value->expr_type == EXPR_ARRAY)
{
gfc_current_locus = old_loc;
m = gfc_match_init_expr (result);
if (m == MATCH_ERROR)
return m;
if (m == MATCH_YES)
{
if (gfc_simplify_expr (*result, 0) == FAILURE)
m = MATCH_ERROR;
if ((*result)->expr_type == EXPR_CONSTANT)
return m;
else
{
gfc_error ("Invalid initializer %s in Data statement at %C", name);
return MATCH_ERROR;
}
}
}
*result = gfc_copy_expr (sym->value);
return MATCH_YES;
}
......
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