https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87727
--- Comment #4 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- > Most likely r265398, i.e. another far-reaching RTL change like r264897. The change seems to be a clear pessimization on SPARC, especially on small functions where there is often mov %o0, %g1 at the beginning now. That's the cant_combine_insn_p part alone (I don't really understand make_more_copies, it looks redundant with the other part). --- gcc.0/920608-1.s Sat Nov 17 09:40:14 2018 +++ gcc.1/920608-1.s Sat Nov 17 09:44:54 2018 @@ -13,9 +13,8 @@ .type bar, #function .proc 04 bar: - mov %o0, %g1 + ldsh [%o0+2], %g1 mov 0, %o0 - ldsh [%g1+2], %g1 cmp %g1, 44 jmp %o7+8 movle %icc, 1, %o0 --- gcc.0/930503-1.s Sat Nov 17 09:40:15 2018 +++ gcc.1/930503-1.s Sat Nov 17 09:44:54 2018 @@ -5,12 +5,10 @@ .type f, #function .proc 04 f: - mov %o0, %g4 - mov %o1, %g3 mov 0, %g1 .LL2: - ldub [%g4+%g1], %g2 - stb %g2, [%g3+%g1] + ldub [%o0+%g1], %g2 + stb %g2, [%o1+%g1] ba,pt %xcc, .LL2 add %g1, 1, %g1 .size f, .-f --- gcc.0/941014-1.s Sat Nov 17 09:40:15 2018 +++ gcc.1/941014-1.s Sat Nov 17 09:44:54 2018 @@ -5,8 +5,7 @@ .type f, #function .proc 04 f: - mov %o0, %g2 - stb %g0, [%g2] + stb %g0, [%o0] jmp %o7+8 mov %g1, %o0 .size f, .-f --- gcc.0/HIcmp.s Sat Nov 17 09:40:16 2018 +++ gcc.1/HIcmp.s Sat Nov 17 09:44:56 2018 @@ -30,9 +30,8 @@ .type reg0imm1, #function .proc 04 reg0imm1: - mov %o0, %g1 + sll %o0, 16, %g1 mov 0, %o0 - sll %g1, 16, %g1 sra %g1, 16, %g1 cmp %g1, 33 jmp %o7+8 --- gcc.0/aos.s Sat Nov 17 09:40:15 2018 +++ gcc.1/aos.s Sat Nov 17 09:44:55 2018 @@ -5,9 +5,8 @@ .type foo, #function .proc 04 foo: - mov %o0, %g1 + cmp %o0, 0 mov 0, %o0 - cmp %g1, 0 jmp %o7+8 movg %icc, 1, %o0 .size foo, .-foo --- gcc.0/b1.s Sat Nov 17 09:40:16 2018 +++ gcc.1/b1.s Sat Nov 17 09:44:55 2018 @@ -6,10 +6,9 @@ .proc 04 foo: orcc %o0, %o1, %g0 - mov 255, %g1 - move %icc, 0, %g1 + mov 255, %o0 jmp %o7+8 - mov %g1, %o0 + move %icc, 0, %o0 --- gcc.0/complex-1.s Sat Nov 17 09:40:16 2018 +++ gcc.1/complex-1.s Sat Nov 17 09:44:55 2018 @@ -16,9 +16,8 @@ .type g, #function .proc 020 g: - mov %o0, %g1 + ld [%o0], %o1 mov 0, %o0 - ld [%g1], %o1 or %o7, %g0, %g1 call v, 0 or %g1, %g0, %o7 --- gcc.0/stor.s Sat Nov 17 09:40:20 2018 +++ gcc.1/stor.s Sat Nov 17 09:45:00 2018 @@ -12,8 +12,7 @@ st %g2, [%g1+8] st %g2, [%g1+12] st %g2, [%g1+16] - st %g2, [%g1+20] jmp %o7+8 - mov %g3, %o0 + st %g2, [%g1+20] .size foo, .-foo Another annoying effect --- gcc.0/pr34966.s Sat Nov 17 09:40:17 2018 +++ gcc.1/pr34966.s Sat Nov 17 09:44:57 2018 @@ -16,11 +16,9 @@ .type f, #function .proc 07 f: - save %sp, -120, %sp - std %i0, [%fp-24] - ldd [%fp-24], %f8 + save %sp, -112, %sp stx %g0, [%fp-16] - std %f8, [%fp-8] + std %i0, [%fp-8] call cexp, 0 add %fp, -16, %o0 return %i7+8 [-] is the baseline [+] is with the change reverted