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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org,
                   |                            |krebbel at gcc dot gnu.org,
                   |                            |stefansf at gcc dot gnu.org

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(define_insn "*clrmem_short"
  [(set (match_operand:BLK 0 "memory_operand" "=Q,Q,Q,Q")
        (const_int 0))
   (use (match_operand 1 "nonmemory_operand" "n,a,a,a"))
   (use (match_operand 2 "immediate_operand" "X,R,X,X"))
   (clobber (match_scratch:P 3 "=X,X,X,&a"))
   (clobber (reg:CC CC_REGNUM))]
  "(GET_MODE (operands[1]) == Pmode || GET_MODE (operands[1]) == VOIDmode)"
  "#"
  [(set_attr "type" "cs")
   (set_attr "cpu_facility" "*,*,z10,cpu_zarch")])

operands[1] is a CONST_INT, so that feels like the first alternative, but the
first
CLOBBER is a REG rather than SCRATCH, so maybe during RA it was first the 4th
alternative and then a CONST_INT propagated to that?

If so, I wonder if all the
  (clobber (scratch))
cases in all the s390.md define_split patterns shouldn't be instead either
  (clobber (match_scratch 3))
or
  (clobber (match_operand 3 "scratch_operand"))
so that they don't fail to split if it isn't SCRATCH but some REG (and just
ignore it in that case).

Reply via email to