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

            Bug ID: 95444
           Summary: Incorrect constraints on length operand in cmpstrnqi
                    patterns
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hjl.tools at gmail dot com
                CC: crazylht at gmail dot com, hubicka at ucw dot cz, ubizjak 
at gmail dot com
  Target Milestone: ---
            Target: i386,x864-64

cmpstrnqi patterns has

(define_insn "*cmpstrnqi_1"
  [(set (reg:CC FLAGS_REG)
        (if_then_else:CC (ne (match_operand:P 6 "register_operand" "2")
                             (const_int 0))
          (compare:CC (mem:BLK (match_operand:P 4 "register_operand" "0"))
                      (mem:BLK (match_operand:P 5 "register_operand" "1")))
          (const_int 0)))
   (use (match_operand:SI 3 "immediate_operand" "i"))
   (use (reg:CC FLAGS_REG))
   (clobber (match_operand:P 0 "register_operand" "=S"))
   (clobber (match_operand:P 1 "register_operand" "=D"))
   (clobber (match_operand:P 2 "register_operand" "=c"))]

"=c" is incorrect since the CX register is used for both input and output.

Reply via email to