diff options
author | Richard Biener <rguenther@suse.de> | 2022-07-08 10:41:59 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2022-07-08 13:05:19 +0200 |
commit | cf3a120084e94614a4917f71940325cd4b537f24 (patch) | |
tree | 469de3ec96aea9727c14a22ec94cb0a295693680 /gcc/expr.cc | |
parent | 95a234f5cbd510e6b8c8e53dd9f1003fddc84c28 (diff) | |
download | gcc-cf3a120084e94614a4917f71940325cd4b537f24.zip gcc-cf3a120084e94614a4917f71940325cd4b537f24.tar.gz gcc-cf3a120084e94614a4917f71940325cd4b537f24.tar.bz2 |
tree-optimization/106226 - move vectorizer virtual SSA update
When we knowingly have broken virtual SSA form we need to update
it before we eventually perform slpeel manual updating which will
call delete_update_ssa. Currently that's done on-demand but
communicating whether it's a known unavoidable case is broken
there. The following makes that a synchronous operation but
instead of actually performing the update we instead recod the
need, clear the update SSA sub-state and force virtual renaming
at the very end of the vectorization pass.
PR tree-optimization/106226
* tree-vect-loop-manip.cc (vect_do_peeling): Assert that
no SSA update is needed. Move virtual SSA update ...
* tree-vectorizer.cc (pass_vectorize::execute): ... here,
via forced virtual renaming when TODO_update_ssa_only_virtuals
is queued.
(vect_transform_loops): Return TODO_update_ssa_only_virtuals
when virtual SSA update is required.
(try_vectorize_loop_1): Adjust.
* tree-vect-stmts.cc (vectorizable_simd_clone_call): Allow
virtual renaming if the ABI forces an aggregate return
but the original call did not have a virtual definition.
* gfortran.dg/pr106226.f: New testcase.
Diffstat (limited to 'gcc/expr.cc')
0 files changed, 0 insertions, 0 deletions