https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113693
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- We have <bb 12> [local count: 955630224]: # _236 = PHI <_101(11)> _110 = .UADDC (prephitmp_250, 0, _101); and _101 is defined in the loop just exited. This is broken by #0 set_ssa_use_from_ptr (use=0x7ffff7fb29c0, val=<ssa_name 0x7ffff71f7cf0 101>) at /space/rguenther/src/gcc/gcc/ssa-iterators.h:297 #1 0x00000000019c17c3 in replace_exp (op_p=0x7ffff7fb29c0, val=<ssa_name 0x7ffff71f7cf0 101>) at /space/rguenther/src/gcc/gcc/tree-ssa-propagate.cc:1150 #2 0x00000000019c18b4 in propagate_value (op_p=0x7ffff7fb29c0, val=<ssa_name 0x7ffff71f7cf0 101>) at /space/rguenther/src/gcc/gcc/tree-ssa-propagate.cc:1173 #3 0x00000000019fb999 in eliminate_dom_walker::eliminate_stmt ( this=0x7fffffffd610, b=<basic_block 0x7ffff71f4780 (12)>, gsi=0x7fffffffd2f0) at /space/rguenther/src/gcc/gcc/tree-ssa-sccvn.cc:7179 #4 0x00000000019ff727 in process_bb (avail=..., bb=<basic_block 0x7ffff71f4780 (12)>, bb_visited=false, iterate_phis=false, iterate=false, eliminate=true, do_region=true, exit_bbs=0x7fffffffd890, skip_phis=false) at /space/rguenther/src/gcc/gcc/tree-ssa-sccvn.cc:8190 #5 0x0000000001a016a5 in do_rpo_vn_1 (fn=0x7ffff71e2000, entry=<edge 0x7ffff71f55a0 (11 -> 12)>, exit_bbs=0x7fffffffd890, iterate=false, eliminate=true, skip_entry_phis=false, kind=VN_WALKREWRITE) at /space/rguenther/src/gcc/gcc/tree-ssa-sccvn.cc:8642 #6 0x0000000001a01d09 in do_rpo_vn (fn=0x7ffff71e2000, entry=<edge 0x7ffff71f55a0 (11 -> 12)>, exit_bbs=0x7fffffffd890, iterate=false, eliminate=true, skip_entry_phis=false, kind=VN_WALKREWRITE) at /space/rguenther/src/gcc/gcc/tree-ssa-sccvn.cc:8747 #7 0x0000000001b1717d in (anonymous namespace)::pass_vectorize::execute ( this=0x485ab10, fun=0x7ffff71e2000) at /space/rguenther/src/gcc/gcc/tree-vectorizer.cc:1389 but region VN is supposed to preserve LC SSA. We're value-numbering the region with entry edge 11 -> 12 (that's the exit edge from the previous loop). We try to include the preheader here which I think is fine because the vectorizer puts stmts there. The way to preserve LC SSA, making the op available, isn't working here because of the change that treats out-of-region defs as available.