https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67573
--- Comment #2 from Kazumoto Kojima <kkojima at gcc dot gnu.org> --- It seems that LRA allocates r7 for the scratch reg at (define_insn_and_split "call_value_pcrel" [(set (match_operand 0 "" "=rf") (call (mem:SI (match_operand:SI 1 "symbol_ref_operand" "")) (match_operand 2 "" ""))) (use (reg:SI FPSCR_MODES_REG)) (use (reg:SI PIC_REG)) (clobber (reg:SI PR_REG)) (use (match_scratch:SI 3 "=r"))] in the problematic case and the insn (call_insn 208 207 209 22 (parallel [ (set (reg:SI 0 r0) (call (mem:SI (symbol_ref:SI ("_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4copyEPwjj") [flags 0x41] <function_decl 0xb72c0280 copy>) [0 copy S4 A32]) (const_int 0 [0]))) (use (reg:SI 154 fpscr0)) (use (reg:SI 12 r12)) (clobber (reg:SI 146 pr)) (clobber (reg:SI 7 r7 [357])) ]) fa.cc:484 322 {call_value_pcrel} (expr_list:REG_EH_REGION (const_int 4 [0x4]) (expr_list:REG_CALL_DECL (symbol_ref:SI ("_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4copyEPwjj") [flags 0x41] <function_decl 0xb72c0280 copy>) (nil))) (expr_list:SI (use (reg:SI 4 r4)) (expr_list:SI (use (reg:SI 5 r5)) (expr_list:SI (use (reg:SI 6 r6)) (expr_list:SI (use (reg:SI 7 r7)) (nil)))))) made the following passes confused.