https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110091
--- Comment #10 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Siddhesh Poyarekar from comment #9)
> (In reply to Andrew Pinski from comment #8)
> > So the way m_check_dangling_p works seems wrong from the get go.
> >
> > We can only push one clobber on the hashtable and we only pop from the
> > hashtable if there was a direct store to that variable.
> >
> > So for an example we might have:
> > ```
> > a {v}= {CLOBBER(eos)};
> > c = b ? &a : &d;
> > *c = t;
> > if (b)
> > e = a;
> > else
> > e = d;
> > ```
> > We would get a warning here. even though this is very much well defined.
>
> Why is this well defined? Isn't the address of `a` being taken after the
> storage has been invalidated, or have I misunderstood your point?
because we dont have a marker that starts the storage .
The storage is started when the address is taken or a store happens to it.
The above ir can happen via unrolling even.