https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77768
--- Comment #10 from rguenther at suse dot de <rguenther at suse dot de> --- On Thu, 29 Sep 2016, trippels at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77768 > > --- Comment #8 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- > Looks like tree-ssa-pre.c also needs to be guarded: > > 0x10c3a273 crash_signal > ../../gcc/gcc/toplev.c:337 > 0x10f30e2c eliminate_dom_walker::before_dom_children(basic_block_def*) > ../../gcc/gcc/tree-ssa-pre.c:4448 > 0x11807427 dom_walker::walk(basic_block_def*) > ../../gcc/gcc/domwalk.c:265 > 0x10f2a9a7 eliminate > ../../gcc/gcc/tree-ssa-pre.c:4709 > 0x10f3e31f execute > ../../gcc/gcc/tree-ssa-pre.c:5055 > > > diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c > index 3675fb9..cc008c2 100644 > --- a/gcc/tree-ssa-pre.c > +++ b/gcc/tree-ssa-pre.c > @@ -4445,8 +4445,8 @@ eliminate_dom_walker::before_dom_children (basic_block > b) > /* We can only remove the later store if the former aliases > at least all accesses the later one does. */ > alias_set_type set = get_alias_set (lhs); > - if (vnresult->set == set > - || alias_set_subset_of (set, vnresult->set)) > + if (vnresult && (vnresult->set == set > + || alias_set_subset_of (set, vnresult->set))) > { > if (dump_file && (dump_flags & TDF_DETAILS)) > { I'm testing ! vnresult || vnresult->set == ... instead, we can remove stores to readonly memory if it stores the same value as present. Richard.