From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 7810) id 908FC3858404; Thu, 19 Oct 2023 10:14:54 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 908FC3858404 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1697710494; bh=Hk4e6EyiSv4gqBNT38leABHYVDty7h9bkIemSRBpQF4=; h=From:To:Subject:Date:From; b=m4nq7RNqevK9uVIrlJM/THD/Gv/NOGxyJj7us8NJODh86HEStIdr7kg5YGt5VSxMA jbbjHXoUv6DaSOBbHGwd2S6fdPDifVefNs8vKz1yv15jJSca8+9PbU6WOaE0LqYegI KITEzk69bQcZO/pe5HtKE84J0DgfMBfS0im72dvE= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Alex Coplan To: gcc-cvs@gcc.gnu.org Subject: [gcc r14-4738] rtl-ssa: Add entry point to allow re-parenting uses X-Act-Checkin: gcc X-Git-Author: Alex Coplan X-Git-Refname: refs/heads/master X-Git-Oldrev: c95aab23c152115cd567541dd134f3fab6f45e78 X-Git-Newrev: ba230aa1b855c32d5414183b604e45ce836fb532 Message-Id: <20231019101454.908FC3858404@sourceware.org> Date: Thu, 19 Oct 2023 10:14:54 +0000 (GMT) List-Id: https://gcc.gnu.org/g:ba230aa1b855c32d5414183b604e45ce836fb532 commit r14-4738-gba230aa1b855c32d5414183b604e45ce836fb532 Author: Alex Coplan Date: Thu Aug 17 16:16:46 2023 +0100 rtl-ssa: Add entry point to allow re-parenting uses This is needed by the upcoming aarch64 load pair pass, as it can re-order stores (when alias analysis determines this is safe) and thus change which mem def a given use consumes (in the RTL-SSA view, there is no alias disambiguation of memory). gcc/ChangeLog: * rtl-ssa/accesses.cc (function_info::reparent_use): New. * rtl-ssa/functions.h (function_info): Declare new member function reparent_use. Diff: --- gcc/rtl-ssa/accesses.cc | 8 ++++++++ gcc/rtl-ssa/functions.h | 3 +++ 2 files changed, 11 insertions(+) diff --git a/gcc/rtl-ssa/accesses.cc b/gcc/rtl-ssa/accesses.cc index f12b5f4dd775..774ab9d99eea 100644 --- a/gcc/rtl-ssa/accesses.cc +++ b/gcc/rtl-ssa/accesses.cc @@ -1239,6 +1239,14 @@ function_info::add_use (use_info *use) insert_use_before (use, neighbor->value ()); } +void +function_info::reparent_use (use_info *use, set_info *new_def) +{ + remove_use (use); + use->set_def (new_def); + add_use (use); +} + // If USE has a known definition, remove USE from that definition's list // of uses. Also remove if it from the associated splay tree, if any. void diff --git a/gcc/rtl-ssa/functions.h b/gcc/rtl-ssa/functions.h index 8b53b2640642..d7da9774213c 100644 --- a/gcc/rtl-ssa/functions.h +++ b/gcc/rtl-ssa/functions.h @@ -159,6 +159,9 @@ public: // Like change_insns, but for a single change CHANGE. void change_insn (insn_change &change); + // Given a use USE, re-parent it to get its def from NEW_DEF. + void reparent_use (use_info *use, set_info *new_def); + // If the changes that have been made to instructions require updates // to the CFG, perform those updates now. Return true if something changed. // If it did: