https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66552
--- Comment #4 from Segher Boessenkool <segher at gcc dot gnu.org> --- Trunk does (both -m32 and -m64) srawi 9,4,5 addze 9,9 slwi 9,9,5 subf 4,9,4 srw 3,3,4 and rlwinm 4,4,0,27,31 srw 3,3,4 so the original problem is still there.