https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121343
Bug ID: 121343 Summary: [avr] Use hard-register constraints instead of explicit hard-regs in avr.md Product: gcc Version: 16.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: gjl at gcc dot gnu.org Target Milestone: --- Many insns in avr.md can be simplified and be made more robust by using hard-register constraints, like ;; Swap Bytes (change byte-endianness) (define_insn_and_split "bswapsi2" [(set (match_operand:SI 0 "register_operand" "={r22}") (bswap:SI (match_operand:SI 1 "register_operand" "{r22}")))] "" "#" "&& reload_completed" [(parallel [(set (reg:SI 22) (bswap:SI (reg:SI 22))) (clobber (reg:CC REG_CC))])]) instead of: ;; Swap Bytes (change byte-endianness) (define_expand "bswapsi2" [(set (reg:SI 22) (match_operand:SI 1 "register_operand" "")) (set (reg:SI 22) (bswap:SI (reg:SI 22))) (set (match_operand:SI 0 "register_operand" "") (reg:SI 22))]) (define_insn_and_split "*bswapsi2.libgcc_split" [(set (reg:SI 22) (bswap:SI (reg:SI 22)))] "" "#" "&& reload_completed" [(parallel [(set (reg:SI 22) (bswap:SI (reg:SI 22))) (clobber (reg:CC REG_CC))])])