From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24237 invoked by alias); 27 Oct 2011 23:32:13 -0000 Received: (qmail 21786 invoked by uid 22791); 27 Oct 2011 23:31:32 -0000 X-SWARE-Spam-Status: No, hits=-1.5 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from smtp25.services.sfr.fr (HELO smtp25.services.sfr.fr) (93.17.128.120) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 27 Oct 2011 23:31:17 +0000 Received: from filter.sfr.fr (localhost [127.0.0.1]) by msfrf2512.sfr.fr (SMTP Server) with ESMTP id 38C767000044; Fri, 28 Oct 2011 01:31:16 +0200 (CEST) Received: from gimli.local (145.15.72.86.rev.sfr.net [86.72.15.145]) by msfrf2512.sfr.fr (SMTP Server) with ESMTP id D824D7000040; Fri, 28 Oct 2011 01:31:15 +0200 (CEST) X-SFR-UUID: 20111027233115885.D824D7000040@msfrf2512.sfr.fr Content-Type: multipart/mixed; boundary="===============0966588543440893757==" MIME-Version: 1.0 From: Mikael Morin To: gfortran , GCC patches Message-ID: <20111027233115.18581.66168@gimli.local> In-Reply-To: <20111027233031.18581.58613@gimli.local> References: <20111027232818.18581.901@gimli.local> <20111027233031.18581.58613@gimli.local> Subject: [Patch, fortran] [26/66] inline sum and product: Update core structs: Move scalar struct. Date: Thu, 27 Oct 2011 23:33:00 -0000 X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2011-10/txt/msg02541.txt.bz2 --===============0966588543440893757== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-length: 206 This moves data::scalar field from gfc_ss to gfc_ss_info. The expr subfield is renamed to value, as it is not the expression really, it is a reference to a variable containing the pre-calculated value. OK? --===============0966588543440893757== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="pr43829-26.CL" Content-length: 424 2011-10-19 Mikael Morin * trans.h (struct gfc_ss, struct gfc_ss_info): Move member struct gfc_ss::data::scalar into newly created union gfc_ss_info::data, and rename subfield expr to value. * trans-array.c (gfc_add_loop_ss_code, gfc_conv_array_index_offset, gfc_conv_expr_descriptor): Update reference chains. * trans-const.c (gfc_conv_constant): Ditto. * trans-expr.c (gfc_conv_expr): Ditto. --===============0966588543440893757== Content-Type: text/x-diff; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="pr43829-26.patch" Content-length: 3223 diff --git a/trans-array.c b/trans-array.c index 827d13d..eef0f09 100644 --- a/trans-array.c +++ b/trans-array.c @@ -2208,7 +2208,7 @@ gfc_add_loop_ss_code (gfc_loopinfo * loop, gfc_ss * ss, bool subscript, else gfc_add_block_to_block (&loop->post, &se.post); - ss->data.scalar.expr = se.expr; + ss_info->data.scalar.value = se.expr; ss_info->string_length = se.string_length; break; @@ -2220,7 +2220,7 @@ gfc_add_loop_ss_code (gfc_loopinfo * loop, gfc_ss * ss, bool subscript, gfc_add_block_to_block (&loop->pre, &se.pre); gfc_add_block_to_block (&loop->post, &se.post); - ss->data.scalar.expr = gfc_evaluate_now (se.expr, &loop->pre); + ss_info->data.scalar.value = gfc_evaluate_now (se.expr, &loop->pre); ss_info->string_length = se.string_length; break; @@ -2571,7 +2571,7 @@ conv_array_index_offset (gfc_se * se, gfc_ss * ss, int dim, int i, gcc_assert (info->subscript[dim] && info->subscript[dim]->info->type == GFC_SS_SCALAR); /* We've already translated this value outside the loop. */ - index = info->subscript[dim]->data.scalar.expr; + index = info->subscript[dim]->info->data.scalar.value; index = trans_array_bound_check (se, ss, index, dim, &ar->where, ar->as->type != AS_ASSUMED_SIZE @@ -6134,7 +6134,7 @@ gfc_conv_expr_descriptor (gfc_se * se, gfc_expr * expr, gfc_ss * ss) { gcc_assert (info->subscript[n] && info->subscript[n]->info->type == GFC_SS_SCALAR); - start = info->subscript[n]->data.scalar.expr; + start = info->subscript[n]->info->data.scalar.value; } else { diff --git a/trans-const.c b/trans-const.c index 35a5e68..fa820ef 100644 --- a/trans-const.c +++ b/trans-const.c @@ -392,7 +392,7 @@ gfc_conv_constant (gfc_se * se, gfc_expr * expr) gcc_assert (ss_info->type == GFC_SS_SCALAR); gcc_assert (ss_info->expr == expr); - se->expr = se->ss->data.scalar.expr; + se->expr = ss_info->data.scalar.value; se->string_length = ss_info->string_length; gfc_advance_se_ss_chain (se); return; diff --git a/trans-expr.c b/trans-expr.c index 87734f1..55853f1 100644 --- a/trans-expr.c +++ b/trans-expr.c @@ -4840,7 +4840,7 @@ gfc_conv_expr (gfc_se * se, gfc_expr * expr) ss_info = ss->info; /* Substitute a scalar expression evaluated outside the scalarization loop. */ - se->expr = se->ss->data.scalar.expr; + se->expr = ss_info->data.scalar.value; if (ss_info->type == GFC_SS_REFERENCE) se->expr = gfc_build_addr_expr (NULL_TREE, se->expr); se->string_length = ss_info->string_length; diff --git a/trans.h b/trans.h index f1b109a..567e5a3 100644 --- a/trans.h +++ b/trans.h @@ -188,6 +188,17 @@ typedef struct gfc_ss_info gfc_ss_type type; gfc_expr *expr; tree string_length; + + union + { + /* If type is GFC_SS_SCALAR or GFC_SS_REFERENCE. */ + struct + { + tree value; + } + scalar; + } + data; } gfc_ss_info; @@ -208,13 +219,6 @@ typedef struct gfc_ss union { - /* If type is GFC_SS_SCALAR or GFC_SS_REFERENCE. */ - struct - { - tree expr; - } - scalar; - /* GFC_SS_TEMP. */ struct { --===============0966588543440893757==--