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 r13-1459] Revert update-ssa assert in vectorizer Date: Mon, 4 Jul 2022 12:58:02 +0000 (GMT) [thread overview] Message-ID: <20220704125802.76B8E38582A7@sourceware.org> (raw) https://gcc.gnu.org/g:3769ad4ccea9589b3f7edaef901cb542aa10f49a commit r13-1459-g3769ad4ccea9589b3f7edaef901cb542aa10f49a Author: Richard Biener <rguenther@suse.de> Date: Mon Jul 4 13:53:24 2022 +0200 Revert update-ssa assert in vectorizer The following reverts the just added assert that virtual SSA does not need updating. It instead goes for a select whitelist of transforms known to be prone to difficulties with virtual SSA update. * tree-vect-loop-manip.cc (vect_do_peeling): Revert assert and update virtual SSA form again. Assert we do so for a known set of transforms only. * tree-vectorizer.h (vec_info::any_known_not_updated_vssa): New. * tree-vect-stmts.cc (vectorizable_load): When vectorizing using load-lanes allow virtual SSA update. Diff: --- gcc/tree-vect-loop-manip.cc | 11 ++++++----- gcc/tree-vect-stmts.cc | 3 +++ gcc/tree-vectorizer.h | 4 ++++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/gcc/tree-vect-loop-manip.cc b/gcc/tree-vect-loop-manip.cc index 7b7af944dba..5c31f0a8091 100644 --- a/gcc/tree-vect-loop-manip.cc +++ b/gcc/tree-vect-loop-manip.cc @@ -2683,11 +2683,12 @@ vect_do_peeling (loop_vec_info loop_vinfo, tree niters, tree nitersm1, class loop *first_loop = loop; bool irred_flag = loop_preheader_edge (loop)->flags & EDGE_IRREDUCIBLE_LOOP; - /* Historically we might have a queued need to update virtual SSA form. - As we delete the update SSA machinery below after doing a regular - incremental SSA update during loop copying make sure we don't - lose that fact. */ - gcc_assert (!need_ssa_update_p (cfun)); + /* We should not have to update virtual SSA form here but some + transforms involve creating new virtual definitions which makes + updating difficult. */ + gcc_assert (!need_ssa_update_p (cfun) + || loop_vinfo->any_known_not_updated_vssa); + update_ssa (TODO_update_ssa_only_virtuals); create_lcssa_for_virtual_phi (loop); diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc index d6a6fe3fb38..72107afc883 100644 --- a/gcc/tree-vect-stmts.cc +++ b/gcc/tree-vect-stmts.cc @@ -8979,6 +8979,9 @@ vectorizable_load (vec_info *vinfo, dump_printf_loc (MSG_NOTE, vect_location, "Vectorizing an unaligned access.\n"); + if (memory_access_type == VMAT_LOAD_STORE_LANES) + vinfo->any_known_not_updated_vssa = true; + STMT_VINFO_TYPE (stmt_info) = load_vec_info_type; vect_model_load_cost (vinfo, stmt_info, ncopies, vf, memory_access_type, alignment_support_scheme, misalignment, diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index 642eb0aeb21..e5fdc9e0a14 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -444,6 +444,10 @@ public: /* Whether the above mapping is complete. */ bool stmt_vec_info_ro; + /* Whether we've done a transform we think OK to not update virtual + SSA form. */ + bool any_known_not_updated_vssa; + /* The SLP graph. */ auto_vec<slp_instance> slp_instances;
reply other threads:[~2022-07-04 12:58 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=20220704125802.76B8E38582A7@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).