From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29706 invoked by alias); 1 May 2010 18:30:21 -0000 Received: (qmail 29567 invoked by uid 48); 1 May 2010 18:30:04 -0000 Date: Sat, 01 May 2010 18:30:00 -0000 Message-ID: <20100501183004.29565.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug fortran/32331] Better error message for variable bond of DATA implied do In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "dfranke at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2010-05/txt/msg00046.txt.bz2 ------- Comment #1 from dfranke at gcc dot gnu dot org 2010-05-01 18:30 ------- How about this? Index: resolve.c =================================================================== --- resolve.c (revision 158958) +++ resolve.c (working copy) @@ -11824,6 +11827,7 @@ traverse_data_list (gfc_data_variable *v 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); @@ -11832,26 +11836,29 @@ traverse_data_list (gfc_data_variable *v 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 can 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 can 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 can 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); @@ -11867,7 +11874,6 @@ traverse_data_list (gfc_data_variable *v { if (traverse_data_var (var->list, where) == FAILURE) { - mpz_clear (trip); retval = FAILURE; goto cleanup; } @@ -11876,7 +11882,6 @@ traverse_data_list (gfc_data_variable *v if (gfc_simplify_expr (e, 1) == FAILURE) { gfc_free_expr (e); - mpz_clear (trip); retval = FAILURE; goto cleanup; } @@ -11886,9 +11891,9 @@ traverse_data_list (gfc_data_variable *v 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); -- dfranke at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dfranke at gcc dot gnu dot | |org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32331