On 10/16/26 10:15 AM, Vineet Gupta wrote:
RTL is largely unstructured. So you *could* have something like (mem
(mem ... )) as the destination. The inner mem is a read that supplies
the address to the outer mem and that inner mem might be volatile. vax
might have this capability, though I don't know for sure.
This would also seem to miss the case when the insn is not a single set,
so maybe it's a PARALLEL with a bunch of reads/writes inside or other
forms that do not satisfy single_set.
Sorry it is not clear what the guidance is, we let combine do what it
does today and address is else where. Or would rather me fix the
combine part differently and/or handle PARALLEL or other things.
Unsure myself...
So while I think your patch improves things, I think it's still leaving
some pretty big holes.
The question is: Is this fix punching a bigger hole than what it is
today or is it patching it partially. I don't want to rush this
change. But if it is an improvement on today, can we land this first
and address the rest as a follow-on. And I promise I won't run away as
I still need you to review my future patches ;-)
My worry is this is a much bigger can of worms than you realize and
we're just papering over a class of problems here.
I kind of think we need to handle PARALLEL correctly.
I'm much less sure what to do about uses that appear on the LHS (such as
the double-indirect case). Sadly note_uses doesn't really do what you
want here :( I'd kind of tend to punt this class of problems right now
(we do elsewhere).
jeff