https://gcc.gnu.org/bugzilla/show_bug.cgi?id=49330
--- Comment #23 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #22)
> Things we fail to disambiguate are
>
> (mem:TF (pre_dec:SI (reg/f:SI 7 sp)) [0 S16 A8])
> vs.
> (mem/c:TF (plus:SI (reg/f:SI 19 frame)
> (const_int -16 [0xfffffffffffffff0])) [1 S16 A128])
>
> or
>
> (mem:SI (pre_dec:SI (reg/f:SI 7 sp)) [3 S4 A32])
> vs.
> (mem/f/c:SI (symbol_ref:SI ("argv") [flags 0x2] <var_decl 0x7f782d1e6360
> argv>) [2 argv+0 S4 A32])
>
> where I don't find anything besides CSELIB cselib_sp_based_value_p handling
> in find_base_term that could be the one handling it?
>
> I guess we should be able to somehow handle both sp and frame based
> accesses in a more conservative way?
it's really 99% like this which is why eventually that CONST_INT restriction
worked so "well".
Can we easily identify spill slot accesses somehow? The parameter accesses
(frame references?) should simply get appropriate MEM_EXPRs IMHO.