https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117770
--- Comment #3 from John David Anglin <danglin at gcc dot gnu.org> --- I suspect explicitly setting hard registers prior to reload confuses LRA: ;;; Division and mod. (define_expand "divsi3" [(set (reg:SI 26) (match_operand:SI 1 "move_src_operand" "")) (set (reg:SI 25) (match_operand:SI 2 "move_src_operand" "")) (parallel [(set (reg:SI 29) (div:SI (reg:SI 26) (reg:SI 25))) (clobber (match_dup 3)) (clobber (match_dup 4)) (clobber (reg:SI 26)) (clobber (reg:SI 25)) (clobber (match_dup 5))]) (set (match_operand:SI 0 "move_dest_operand" "") (reg:SI 29))]