https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113597
--- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> --- Created attachment 57212 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=57212&action=edit patch for debugging Btw, I've used the attached to investigate other issues with the change. It will show the outcome of base_alias_check and find_base_term in dumps. One issue is that we're much more dependent on MEM_EXPRs being present. Before figuring there wouldn't be much important regressions the idea was to instead of doing find_base_term have a known base value recorded in the MEM_ATTRs, and as the only important ones should be the special ones for argument frame and stack-based represent that by an enum (rather than the other possibility of using ADDRESS). I'll also note that for spill slots we get around to use spill_slot_decl and set_mem_attrs_for_spill. I've not yet convinced myself that the other special bases we have really form a completely separate memory class. But if they do then accesses should do something similar there (but mind scheduling of frame related instructions ...). Argument stack slots are one important class, set up by init_alias_analysis. But those are also backed by regular decls at times (but not always)? assign_stack_temp "allocated" memory is another class, we're reusing slots during RTL expansion and they get (even if shared) a specific alias set. I don't think we ever release those temps and say re-use the space for spilling so assigning a different decl to each slot should eventually work.