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.

Reply via email to