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.