https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97532

--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
memory_operand calls general_operand which for MEM does:
      /* Use the mem's mode, since it will be reloaded thus.  LRA can
         generate move insn with invalid addresses which is made valid
         and efficiently calculated by LRA through further numerous
         transformations.  */
      if (lra_in_progress
          || memory_address_addr_space_p (GET_MODE (op), y, MEM_ADDR_SPACE
(op)))
        return 1;
So, during LRA it accepts anything, and at the end of LRA it ICEs because it
isn't recognized.
So, I think LRA needs to know somewhere what is the address operand of the MEM
even inside of the bcst_mem_operand and know that it should fix it up.

Reply via email to