From 42ac5ee1287b6c9931a7e67c96f05fffb9b5b022 Mon Sep 17 00:00:00 2001 From: Mikael Morin Date: Tue, 18 Oct 2011 14:53:43 +0000 Subject: [PATCH] trans-array.h (gfc_walk_array_ref): New prototype. * trans-array.h (gfc_walk_array_ref): New prototype. * trans-array.c (gfc_walk_array_ref): New function, containing all but the beginning of gfc_walk_variable_expr's code. (gfc_walk_variable_expr): Use gfc_walk_array_ref. From-SVN: r180144 --- gcc/fortran/ChangeLog | 7 +++++++ gcc/fortran/trans-array.c | 14 +++++++++++--- gcc/fortran/trans-array.h | 2 ++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 1cea460f3db..67e2bcf3dfb 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2011-10-18 Mikael Morin + + * trans-array.h (gfc_walk_array_ref): New prototype. + * trans-array.c (gfc_walk_array_ref): New function, containing + all but the beginning of gfc_walk_variable_expr's code. + (gfc_walk_variable_expr): Use gfc_walk_array_ref. + 2011-10-18 Mikael Morin PR fortran/50420 diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 06a81f1db71..89528b47239 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -7603,14 +7603,22 @@ static gfc_ss * gfc_walk_variable_expr (gfc_ss * ss, gfc_expr * expr) { gfc_ref *ref; - gfc_array_ref *ar; - gfc_ss *newss; - int n; for (ref = expr->ref; ref; ref = ref->next) if (ref->type == REF_ARRAY && ref->u.ar.type != AR_ELEMENT) break; + return gfc_walk_array_ref (ss, expr, ref); +} + + +gfc_ss * +gfc_walk_array_ref (gfc_ss * ss, gfc_expr * expr, gfc_ref * ref) +{ + gfc_array_ref *ar; + gfc_ss *newss; + int n; + for (; ref; ref = ref->next) { if (ref->type == REF_SUBSTRING) diff --git a/gcc/fortran/trans-array.h b/gcc/fortran/trans-array.h index 73d8c40c9e9..4d737bde94f 100644 --- a/gcc/fortran/trans-array.h +++ b/gcc/fortran/trans-array.h @@ -70,6 +70,8 @@ void gfc_trans_static_array_pointer (gfc_symbol *); gfc_ss *gfc_walk_expr (gfc_expr *); /* Workhorse for gfc_walk_expr. */ gfc_ss *gfc_walk_subexpr (gfc_ss *, gfc_expr *); +/* Workhorse for gfc_walk_variable_expr. */ +gfc_ss *gfc_walk_array_ref (gfc_ss *, gfc_expr *, gfc_ref * ref); /* Walk the arguments of an elemental function. */ gfc_ss *gfc_walk_elemental_function_args (gfc_ss *, gfc_actual_arglist *, gfc_ss_type); -- 2.30.2