On Mon, Jun 09, 2025 at 08:26:10AM -0600, Jeff Law wrote:
> On 4/1/25 9:35 PM, Jeff Law wrote:
> So returning to this....
> 
> So the combine pass doesn't reject combination into an ASM_INPUT, just 
> combination from most ASM_INPUTs.

Yeah, exactly.

> It does rely on predicates to determine validity.

More precisely, recog() does.

> So my suspicion is 
> that the memory_operand (or one of the closely related) predicates is 
> returning true for an addressing mode is that is not always valid.

Yeah, some target issue.

> Or to put it another way, addressing mode validity is based on two 
> properties.  The form of the address and the mode of the memory 
> reference.  If any other context is needed to determine validity, then 
> that addressing format must not be considered valid for the given memory 
> access mode.
> 
> I hope I didn't steer you the wrong way on that issue Christoph!

Yeah, sounds like a bug in TARGET_LEGITIMATE_ADDRESS_P .

> So at best this splitter is still just papering over a bigger problem 
> that needs to be fixed.

Essentially all splitters that are made just for combine paper over
something (not define_insn_and_split, I mean pure splitters here;
sometimes you want to allow combine to create something complex).


Segher

Reply via email to