https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87767
Vladimir Makarov <vmakarov at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |vmakarov at gcc dot gnu.org --- Comment #16 from Vladimir Makarov <vmakarov at gcc dot gnu.org> --- (In reply to Hongtao.liu from comment #15) > (In reply to Jakub Jelinek from comment #12) > > Hi Vladimir Makarov: > I saw you add DEFINE_SPECIAL_MEMORY_CONSTRAINT in PR69299, currently we > encounter a similar problem as PR69299, we want to add > special_memory_constraint for broadcast memory operand(call it > bcst_mem_operand later), but problem is bcst_mem_operand is not MEM_P, it's > like (vec_duplicate:V4SF (mem:SF (reg:...))), so pass_reload can't properly > handle this constraint(it alway assumes the operand should be MEM_P). So the > question is can we enhance the handling of special_memory_constraint, not > only restricted to MEM_P, but also for operand containing a memory_operand > inside(i.e. bcst_mem_operand). Sure, I am open to any patches to solve this problem by extending special memory constraint semantic or even introducing new special constraint. It would have no sense to implement this for old reload pass as gcc targets are moving from it. So you need to do this only for LRA.