mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-02 05:50:26 +08:00
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
This commit is contained in:
parent
f69ab0e0c4
commit
d46e0870c0
@ -1,3 +1,9 @@
|
||||
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
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user