http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58314

chrbr at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|c                           |target

--- Comment #1 from chrbr at gcc dot gnu.org ---
Indeed, not directly related to the asm, we end-up generating a pattern

(insn 195 194 64 2 (set (reg:HI 261 [ x ])
        (reg:HI 0 r0)) pr58314.c:12 261 {*movhi_reg_reg}
     (nil))

with reg 261 that can't be reloaded and fails the constrain_operands in

          if (asm_noperands (PATTERN (insn)) >= 0)
        for (p = NEXT_INSN (prev); p != next; p = NEXT_INSN (p))
          if (p != insn && INSN_P (p)
              && GET_CODE (PATTERN (p)) != USE
              && (recog_memoized (p) < 0
              || (extract_insn (p), ! constrain_operands (1))))
            {
              error_for_asm (insn,
                     "%<asm%> operand requires "
                     "impossible reload");
              delete_insn (p);
            }
        }

the pattern movhi_reg_reg not accepting memory reload. This is a regression
this the constraints we removed from the *movhi patten (that accepted memory
spills)

Reply via email to