aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.cc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2022-07-08 10:41:59 +0200
committerRichard Biener <rguenther@suse.de>2022-07-08 13:05:19 +0200
commitcf3a120084e94614a4917f71940325cd4b537f24 (patch)
tree469de3ec96aea9727c14a22ec94cb0a295693680 /gcc/expr.cc
parent95a234f5cbd510e6b8c8e53dd9f1003fddc84c28 (diff)
downloadgcc-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