resolve.c (traverse_data_list): Rephrase error message for non-constant bounds in data-implied-do.
2010-05-05 Daniel Franke <franke.daniel@gmail.com> * resolve.c (traverse_data_list): Rephrase error message for non-constant bounds in data-implied-do. From-SVN: r159080
This commit is contained in:
parent
564a129d22
commit
147a19a945
2 changed files with 14 additions and 7 deletions
|
@ -1,3 +1,8 @@
|
|||
2010-05-05 Daniel Franke <franke.daniel@gmail.com>
|
||||
|
||||
* resolve.c (traverse_data_list): Rephrase error message for
|
||||
non-constant bounds in data-implied-do.
|
||||
|
||||
2010-05-05 Daniel Franke <franke.daniel@gmail.com>
|
||||
|
||||
PR fortran/24978
|
||||
|
|
|
@ -11837,6 +11837,7 @@ traverse_data_list (gfc_data_variable *var, locus *where)
|
|||
gfc_try retval = SUCCESS;
|
||||
|
||||
mpz_init (frame.value);
|
||||
mpz_init (trip);
|
||||
|
||||
start = gfc_copy_expr (var->iter.start);
|
||||
end = gfc_copy_expr (var->iter.end);
|
||||
|
@ -11845,26 +11846,29 @@ traverse_data_list (gfc_data_variable *var, locus *where)
|
|||
if (gfc_simplify_expr (start, 1) == FAILURE
|
||||
|| start->expr_type != EXPR_CONSTANT)
|
||||
{
|
||||
gfc_error ("iterator start at %L does not simplify", &start->where);
|
||||
gfc_error ("start of implied-do loop at %L could not be "
|
||||
"simplified to a constant value", &start->where);
|
||||
retval = FAILURE;
|
||||
goto cleanup;
|
||||
}
|
||||
if (gfc_simplify_expr (end, 1) == FAILURE
|
||||
|| end->expr_type != EXPR_CONSTANT)
|
||||
{
|
||||
gfc_error ("iterator end at %L does not simplify", &end->where);
|
||||
gfc_error ("end of implied-do loop at %L could not be "
|
||||
"simplified to a constant value", &start->where);
|
||||
retval = FAILURE;
|
||||
goto cleanup;
|
||||
}
|
||||
if (gfc_simplify_expr (step, 1) == FAILURE
|
||||
|| step->expr_type != EXPR_CONSTANT)
|
||||
{
|
||||
gfc_error ("iterator step at %L does not simplify", &step->where);
|
||||
gfc_error ("step of implied-do loop at %L could not be "
|
||||
"simplified to a constant value", &start->where);
|
||||
retval = FAILURE;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
mpz_init_set (trip, end->value.integer);
|
||||
mpz_set (trip, end->value.integer);
|
||||
mpz_sub (trip, trip, start->value.integer);
|
||||
mpz_add (trip, trip, step->value.integer);
|
||||
|
||||
|
@ -11880,7 +11884,6 @@ traverse_data_list (gfc_data_variable *var, locus *where)
|
|||
{
|
||||
if (traverse_data_var (var->list, where) == FAILURE)
|
||||
{
|
||||
mpz_clear (trip);
|
||||
retval = FAILURE;
|
||||
goto cleanup;
|
||||
}
|
||||
|
@ -11889,7 +11892,6 @@ traverse_data_list (gfc_data_variable *var, locus *where)
|
|||
if (gfc_simplify_expr (e, 1) == FAILURE)
|
||||
{
|
||||
gfc_free_expr (e);
|
||||
mpz_clear (trip);
|
||||
retval = FAILURE;
|
||||
goto cleanup;
|
||||
}
|
||||
|
@ -11899,9 +11901,9 @@ traverse_data_list (gfc_data_variable *var, locus *where)
|
|||
mpz_sub_ui (trip, trip, 1);
|
||||
}
|
||||
|
||||
mpz_clear (trip);
|
||||
cleanup:
|
||||
mpz_clear (frame.value);
|
||||
mpz_clear (trip);
|
||||
|
||||
gfc_free_expr (start);
|
||||
gfc_free_expr (end);
|
||||
|
|
Loading…
Add table
Reference in a new issue