https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78437
--- Comment #3 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- Created attachment 40098 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40098&action=edit Tentative fix It only affects Alpha (by default) but I no longer have access to Alpha hardware so I'm going to play with it on SPARC. Its effect on the assembly code on Alpha is: --- pr78437_1.s 2016-11-21 11:54:33.678363106 +0100 +++ pr78437_2.s 2016-11-21 11:54:40.230542615 +0100 @@ -62,7 +62,7 @@ ldbu $7,max($5) !gprellow sextb $8,$3 stb $8,expected($2) !gprellow - mov $3,$22 + bis $31,$8,$22 sextb $7,$7 cmpeq $3,$7,$3 beq $3,$L4 FWIW the change for PR rtl-opt/59461 eliminated 2 redundant extensions.