> On Aug 26, 2024, at 10:40 AM, Michael Matz <m...@suse.de> wrote: > > Hello, > > On Mon, 26 Aug 2024, Paul Koning wrote: > >>>>> 550: [--sp] = 0 sp_off = 0 {pushexthisi_const} >>>>> 551: [--sp] = 37 sp_off = -4 {pushexthisi_const} >>>>> 552: [--sp] = r37 sp_off = -8 {movsi_m68k2} >>>>> 554: [--sp] = r116 - r37 sp_off = -12 {subsi3} >>>>> 556: call sp_off = -16 >>>>> >>>>> insn 554 doesn't match its constraints and needs some reloads: >>>> >>>> I think you're right in that the current code isn't correct, but the >>>> natural question is how in the world has this worked to-date. Though I >>>> guess targets which push arguments are a dying breed (though I would >>>> have expected i386 to have tripped over this at some point). >>> >>> Yeah, I wondered as well. For things to go wrong some instructions that >>> contain pre/post-inc/dec of the stack pointer need to have reloads in such >>> a way that the actual SP-change sideeffect moves to a different >>> instruction. >> >> I think I've seen that in the past on PDP11, and reported it, but I >> thought that particular issue was fixed not too long after. > > Do you have a reference handy? I'd like to take a look, if for nothing > else than curiosity ;-)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87944 <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87944> which says it was fixed in GCC 14 on 5/30/2023. paul