From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 118558 invoked by alias); 26 Oct 2017 12:09:58 -0000 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 Received: (qmail 118542 invoked by uid 89); 26 Oct 2017 12:09:57 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-11.0 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-wm0-f46.google.com Received: from mail-wm0-f46.google.com (HELO mail-wm0-f46.google.com) (74.125.82.46) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 26 Oct 2017 12:09:55 +0000 Received: by mail-wm0-f46.google.com with SMTP id z3so7833696wme.5 for ; Thu, 26 Oct 2017 05:09:55 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=am8SWTHFd0Of4krY/LnKqSEW0Ldq7HqFHq9Gbe80yZg=; b=dyUB0wP3Vmwplkb3Za2d4/0lgvdQeavJX8jy7ajbhgcIRf68rpL04Mq5tCvDQlJ7sK B8LInrSO4YfRJiq+KZkHJ7fFsu76i1i0Sl8ueBtYb0lotBvQ/ba7tn0KKLXjVtU1r3bN kewA5m/YgqvVZMuX0/xz18kqvz3Fmj5ujFYlKr+A5wAOblBA2p5lKRlmez5mcshkJ5hy hkY3wsA0vDilA48eDD7fK0wh9rTfpcvIoFCtvncioItwBOqBr7W0Mumcy1dOlzY4jKfw Os7NO2dj3ui0Sg+6wRaKC21JhGBM8bmoUUV9oSHS7xzLSWG5iKq2iyXjT69m4fKLN6jx OGlQ== X-Gm-Message-State: AMCzsaWd8cDGpOM3k5EXhuj3J1gQOpcIY3SnmWJXrtZps5QvVBlhtlP6 MXaokrd0Mx0uqayAyhjXDH1B2G1FNHyIETs1osgM6g== X-Google-Smtp-Source: ABhQp+R/8QFXrM6E+8GGpWHmnYSco1+haV4XUkdYe9IK5OEvZPY5S5ZhS1V4FjfJa+MQTUwSIYPLI89Our7uWJN6gFM= X-Received: by 10.80.175.165 with SMTP id h34mr28427355edd.292.1509019793194; Thu, 26 Oct 2017 05:09:53 -0700 (PDT) MIME-Version: 1.0 Received: by 10.80.143.34 with HTTP; Thu, 26 Oct 2017 05:09:52 -0700 (PDT) In-Reply-To: <87vaj6umru.fsf@linaro.org> References: <87wp3mxgir.fsf@linaro.org> <87vaj6umru.fsf@linaro.org> From: Richard Biener Date: Thu, 26 Oct 2017 12:10:00 -0000 Message-ID: Subject: Re: [17/nn] Turn var-tracking.c:INT_MEM_OFFSET into a function To: GCC Patches , Richard Sandiford Content-Type: text/plain; charset="UTF-8" X-IsSubscribed: yes X-SW-Source: 2017-10/txt/msg01924.txt.bz2 On Mon, Oct 23, 2017 at 1:27 PM, Richard Sandiford wrote: > This avoids the double evaluation mentioned in the comments and > simplifies the change to make MEM_OFFSET variable. Ok. Richard. > > 2017-10-23 Richard Sandiford > Alan Hayward > David Sherwood > > gcc/ > * var-tracking.c (INT_MEM_OFFSET): Replace with... > (int_mem_offset): ...this new function. > (var_mem_set, var_mem_delete_and_set, var_mem_delete) > (find_mem_expr_in_1pdv, dataflow_set_preserve_mem_locs) > (same_variable_part_p, use_type, add_stores, vt_get_decl_and_offset): > Update accordingly. > > Index: gcc/var-tracking.c > =================================================================== > --- gcc/var-tracking.c 2017-09-12 14:28:56.401824826 +0100 > +++ gcc/var-tracking.c 2017-10-23 11:47:27.197231712 +0100 > @@ -390,8 +390,15 @@ struct variable > /* Pointer to the BB's information specific to variable tracking pass. */ > #define VTI(BB) ((variable_tracking_info *) (BB)->aux) > > -/* Macro to access MEM_OFFSET as an HOST_WIDE_INT. Evaluates MEM twice. */ > -#define INT_MEM_OFFSET(mem) (MEM_OFFSET_KNOWN_P (mem) ? MEM_OFFSET (mem) : 0) > +/* Return MEM_OFFSET (MEM) as a HOST_WIDE_INT, or 0 if we can't. */ > + > +static inline HOST_WIDE_INT > +int_mem_offset (const_rtx mem) > +{ > + if (MEM_OFFSET_KNOWN_P (mem)) > + return MEM_OFFSET (mem); > + return 0; > +} > > #if CHECKING_P && (GCC_VERSION >= 2007) > > @@ -2336,7 +2343,7 @@ var_mem_set (dataflow_set *set, rtx loc, > rtx set_src) > { > tree decl = MEM_EXPR (loc); > - HOST_WIDE_INT offset = INT_MEM_OFFSET (loc); > + HOST_WIDE_INT offset = int_mem_offset (loc); > > var_mem_decl_set (set, loc, initialized, > dv_from_decl (decl), offset, set_src, INSERT); > @@ -2354,7 +2361,7 @@ var_mem_delete_and_set (dataflow_set *se > enum var_init_status initialized, rtx set_src) > { > tree decl = MEM_EXPR (loc); > - HOST_WIDE_INT offset = INT_MEM_OFFSET (loc); > + HOST_WIDE_INT offset = int_mem_offset (loc); > > clobber_overlapping_mems (set, loc); > decl = var_debug_decl (decl); > @@ -2375,7 +2382,7 @@ var_mem_delete_and_set (dataflow_set *se > var_mem_delete (dataflow_set *set, rtx loc, bool clobber) > { > tree decl = MEM_EXPR (loc); > - HOST_WIDE_INT offset = INT_MEM_OFFSET (loc); > + HOST_WIDE_INT offset = int_mem_offset (loc); > > clobber_overlapping_mems (set, loc); > decl = var_debug_decl (decl); > @@ -4618,7 +4625,7 @@ find_mem_expr_in_1pdv (tree expr, rtx va > for (node = var->var_part[0].loc_chain; node; node = node->next) > if (MEM_P (node->loc) > && MEM_EXPR (node->loc) == expr > - && INT_MEM_OFFSET (node->loc) == 0) > + && int_mem_offset (node->loc) == 0) > { > where = node; > break; > @@ -4683,7 +4690,7 @@ dataflow_set_preserve_mem_locs (variable > /* We want to remove dying MEMs that don't refer to DECL. */ > if (GET_CODE (loc->loc) == MEM > && (MEM_EXPR (loc->loc) != decl > - || INT_MEM_OFFSET (loc->loc) != 0) > + || int_mem_offset (loc->loc) != 0) > && mem_dies_at_call (loc->loc)) > break; > /* We want to move here MEMs that do refer to DECL. */ > @@ -4727,7 +4734,7 @@ dataflow_set_preserve_mem_locs (variable > > if (GET_CODE (loc->loc) != MEM > || (MEM_EXPR (loc->loc) == decl > - && INT_MEM_OFFSET (loc->loc) == 0) > + && int_mem_offset (loc->loc) == 0) > || !mem_dies_at_call (loc->loc)) > { > if (old_loc != loc->loc && emit_notes) > @@ -5254,7 +5261,7 @@ same_variable_part_p (rtx loc, tree expr > else if (MEM_P (loc)) > { > expr2 = MEM_EXPR (loc); > - offset2 = INT_MEM_OFFSET (loc); > + offset2 = int_mem_offset (loc); > } > else > return false; > @@ -5522,7 +5529,7 @@ use_type (rtx loc, struct count_use_info > return MO_CLOBBER; > else if (target_for_debug_bind (var_debug_decl (expr))) > return MO_CLOBBER; > - else if (track_loc_p (loc, expr, INT_MEM_OFFSET (loc), > + else if (track_loc_p (loc, expr, int_mem_offset (loc), > false, modep, NULL) > /* Multi-part variables shouldn't refer to one-part > variable names such as VALUEs (never happens) or > @@ -6017,7 +6024,7 @@ add_stores (rtx loc, const_rtx expr, voi > rtx xexpr = gen_rtx_SET (loc, src); > if (same_variable_part_p (SET_SRC (xexpr), > MEM_EXPR (loc), > - INT_MEM_OFFSET (loc))) > + int_mem_offset (loc))) > mo.type = MO_COPY; > else > mo.type = MO_SET; > @@ -9579,7 +9586,7 @@ vt_get_decl_and_offset (rtx rtl, tree *d > if (MEM_ATTRS (rtl)) > { > *declp = MEM_EXPR (rtl); > - *offsetp = INT_MEM_OFFSET (rtl); > + *offsetp = int_mem_offset (rtl); > return true; > } > }