Jeff and Segher, thanks for the clarifications and hints! Bohan, I assume you will have a look at this (there is also PR119587 to keep track of it).
BR Christoph On Mon, Jun 9, 2025 at 6:28 PM Segher Boessenkool <seg...@kernel.crashing.org> wrote: > > 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