https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97184
Bug ID: 97184 Summary: Incorrect MOVDIRI and MOVDIR64B patterns Product: gcc Version: 8.4.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, wwwhhhyyy333 at gmail dot com Target Milestone: --- Target: i386,x86-64 MOVDIRI and MOVDIR64B update memory. But there is not SET operation: ;; MOVDIRI and MOVDIR64B (define_insn "movdiri<mode>" [(unspec_volatile:SWI48 [(match_operand:SWI48 0 "memory_operand" "m") (match_operand:SWI48 1 "register_operand" "r")] UNSPECV_MOVDIRI)] "TARGET_MOVDIRI" "movdiri\t{%1, %0|%0, %1}" [(set_attr "type" "other")]) (define_insn "@movdir64b_<mode>" [(unspec_volatile:XI [(match_operand:P 0 "register_operand" "r") (match_operand:XI 1 "memory_operand")] UNSPECV_MOVDIR64B)] "TARGET_MOVDIR64B" "movdir64b\t{%1, %0|%0, %1}" [(set_attr "type" "other")])