https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126329

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P2
   Last reconfirmed|                            |2026-07-20
                 CC|                            |amacleod at redhat dot com
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
(gdb) p debug_tree (chrec)
 <ssa_name 0x7ffff7424948 type <error_mark 0x7ffff7602f78>
    nothrow
    def_stmt 
    version:15 in-free-list>
$2 = void


confirmed.  This is from substitute-and-fold where the SSA name is released
from

#0  release_ssa_name_fn (fn=0x7ffff7fb6270, var=<ssa_name 0x7ffff7424948 15>)
    at ../../src/gcc/gcc/tree-ssanames.cc:667
#1  0x0000000001595b80 in release_ssa_name (name=<ssa_name 0x7ffff7424948 15>)
    at ../../src/gcc/gcc/tree-ssanames.h:126
#2  0x0000000001e3d9bd in release_defs (stmt=<gimple_assign 0x7ffff7424160>)
    at ../../src/gcc/gcc/tree-ssanames.cc:966
#3  0x0000000001ca6d66 in simple_dce_from_worklist (worklist=0x7fffffffc550, 
    need_eh_cleanup=0x0) at ../../src/gcc/gcc/tree-ssa-dce.cc:2273
#4  0x0000000001f3aa59 in remove_unreachable::handle_early (
    this=0x7fffffffd090, s=<gimple_cond 0x7ffff74242c0>, 
    e=<edge 0x7ffff7426968 (6 -> 8)>) at ../../src/gcc/gcc/tree-vrp.cc:251
#5  0x0000000001f3a485 in remove_unreachable::maybe_register (
    this=0x7fffffffd090, s=<gimple_cond 0x7ffff74242c0>)
    at ../../src/gcc/gcc/tree-vrp.cc:132
#6  0x0000000001f3eea0 in rvrp_folder::pre_fold_stmt (this=0x7fffffffd060, 
    stmt=<gimple_cond 0x7ffff74242c0>) at ../../src/gcc/gcc/tree-vrp.cc:1060
#7  0x0000000001d84c03 in substitute_and_fold_dom_walker::before_dom_children (
    this=0x7fffffffca50, bb=<basic_block 0x7ffff7401b40 (6)>)
    at ../../src/gcc/gcc/tree-ssa-propagate.cc:806

during substitute-and-fold we are delaying removing of stmts exactly because
that disrupts things (at least we did, in the past ...).  Calling
simple_dce_from_worklist from folding looks bogus, this should be done
after the fact.

But substitute-and-fold has become an entangled mess, leaving to VRP folks.
It looks like there's a walker.dceworklist bitmap for this.

Reply via email to