public inbox for gcc-cvs@sourceware.org help / color / mirror / Atom feed
From: Richard Biener <rguenth@gcc.gnu.org> To: gcc-cvs@gcc.gnu.org Subject: [gcc r14-1981] Update virtual SSA form manually where easily possible in phiprop Date: Tue, 20 Jun 2023 10:51:18 +0000 (GMT) [thread overview] Message-ID: <20230620105118.299813854E59@sourceware.org> (raw) https://gcc.gnu.org/g:85107abeb71bbf6edc7dfb7691527be104c11735 commit r14-1981-g85107abeb71bbf6edc7dfb7691527be104c11735 Author: Richard Biener <rguenther@suse.de> Date: Tue Jun 20 09:51:40 2023 +0200 Update virtual SSA form manually where easily possible in phiprop This keeps virtual SSA form up-to-date in phiprop when easily possible. Only when we deal with aggregate copies the work would be too heavy-handed in general. * tree-ssa-phiprop.cc (phiprop_insert_phi): For simple loads keep the virtual SSA form up-to-date. Diff: --- gcc/tree-ssa-phiprop.cc | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/gcc/tree-ssa-phiprop.cc b/gcc/tree-ssa-phiprop.cc index 5dc505df420..21a349a25e2 100644 --- a/gcc/tree-ssa-phiprop.cc +++ b/gcc/tree-ssa-phiprop.cc @@ -33,6 +33,7 @@ along with GCC; see the file COPYING3. If not see #include "gimple-iterator.h" #include "stor-layout.h" #include "tree-ssa-loop.h" +#include "tree-cfg.h" /* This pass propagates indirect loads through the PHI node for its address to make the load source possibly non-addressable and to @@ -153,6 +154,8 @@ phiprop_insert_phi (basic_block bb, gphi *phi, gimple *use_stmt, print_gimple_stmt (dump_file, use_stmt, 0); } + gphi *vphi = get_virtual_phi (bb); + /* Add PHI arguments for each edge inserting loads of the addressable operands. */ FOR_EACH_EDGE (e, ei, bb->preds) @@ -190,9 +193,20 @@ phiprop_insert_phi (basic_block bb, gphi *phi, gimple *use_stmt, { tree rhs = gimple_assign_rhs1 (use_stmt); gcc_assert (TREE_CODE (old_arg) == ADDR_EXPR); + tree vuse = NULL_TREE; if (TREE_CODE (res) == SSA_NAME) - new_var = make_ssa_name (TREE_TYPE (rhs)); + { + new_var = make_ssa_name (TREE_TYPE (rhs)); + if (vphi) + vuse = PHI_ARG_DEF_FROM_EDGE (vphi, e); + else + vuse = gimple_vuse (use_stmt); + } else + /* For the aggregate copy case updating virtual operands + we'd have to possibly insert a virtual PHI and we have + to split the existing VUSE lifetime. Leave that to + the generic SSA updating. */ new_var = unshare_expr (res); if (!is_gimple_min_invariant (old_arg)) old_arg = PHI_ARG_DEF_FROM_EDGE (phi, e); @@ -203,6 +217,8 @@ phiprop_insert_phi (basic_block bb, gphi *phi, gimple *use_stmt, old_arg, TREE_OPERAND (rhs, 1))); gimple_set_location (tmp, locus); + if (vuse) + gimple_set_vuse (tmp, vuse); gsi_insert_on_edge (e, tmp); update_stmt (tmp);
reply other threads:[~2023-06-20 10:51 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20230620105118.299813854E59@sourceware.org \ --to=rguenth@gcc.gnu.org \ --cc=gcc-cvs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).