https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109524
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> --- The edge in question has been removed in #2 0x00000000025b0e32 in free_edge (fn=0x7fffea2ed7e8, e=<error reading variable: Cannot access memory at address 0xa5a5a5a5a5a5a5f9>) at ../../gcc/cfg.cc:93 #3 0x00000000025b1631 in remove_edge_raw (e=<error reading variable: Cannot access memory at address 0xa5a5a5a5a5a5a5f9>) at ../../gcc/cfg.cc:367 #4 0x00000000009e447c in remove_edge (e=<error reading variable: Cannot access memory at address 0xa5a5a5a5a5a5a5f9>) at ../../gcc/cfghooks.cc:464 #5 0x00000000009e49b5 in delete_basic_block (bb=<basic_block 0x7fffea30c240 (8)>) at ../../gcc/cfghooks.cc:636 #6 0x000000000112b193 in remove_edge_and_dominated_blocks (e=<edge 0x7fffea30b600 (3 -> 6)>) at ../../gcc/tree-cfg.cc:8958 #7 0x000000000112b34f in gimple_purge_dead_eh_edges (bb=<basic_block 0x7fffea2dbea0 (3)>) at ../../gcc/tree-cfg.cc:9002 #8 0x000000000112b412 in gimple_purge_all_dead_eh_edges (blocks=0x39d0cb8) at ../../gcc/tree-cfg.cc:9029 #9 0x000000000131281a in substitute_and_fold_engine::substitute_and_fold (this=0x7fffffffd960, block=<basic_block 0x0>) at ../../gcc/tree-ssa-propagate.cc:998 #10 0x000000000145ef6b in execute_ranger_vrp (fun=0x7fffea2ed7e8, warn_array_bounds_p=true, final_p=false) at ../../gcc/tree-vrp.cc:1102 and #0 0x00000000009d9c1b in bb_seq_addr (bb=<error reading variable: Cannot access memory at address 0xa5a5a5a5a5a5a5f9>) at ../../gcc/gimple.h:1820 #1 0x00000000009f7325 in gsi_last_bb (bb=<error reading variable: Cannot access memory at address 0xa5a5a5a5a5a5a5f9>) at ../../gcc/gimple-iterator.h:160 #2 0x0000000000c7fe17 in gsi_last_nondebug_bb (bb=<error reading variable: Cannot access memory at address 0xa5a5a5a5a5a5a5f9>) at ../../gcc/gimple-iterator.h:321 #3 0x000000000265dca9 in gimple_outgoing_range_stmt_p (bb=<error reading variable: Cannot access memory at address 0xa5a5a5a5a5a5a5f9>) at ../../gcc/gimple-range-edge.cc:42 #4 0x000000000145b54d in remove_unreachable::remove_and_update_globals (this=0x7fffffffd970, final_p=false) at ../../gcc/tree-vrp.cc:136 #5 0x000000000145ef87 in execute_ranger_vrp (fun=0x7fffea2ed7e8, warn_array_bounds_p=true, final_p=false) at ../../gcc/tree-vrp.cc:1104 then tries to access the already freed edge which was kept in some list of edges across the gimple_purge_all_dead_eh_edges.