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.

Reply via email to