https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87763
--- Comment #61 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #60) > NOTICE how bfi1_1 uses one rlwimi while bfi1 has rlwinm followed by or but > could just used rlwimi . This is a generic problem of combine wanting to > use nonzerobits but that sometimes can remove "important" information. Actually it is worse because I had it backwards (due to me lowering bit-field accesses on the tree level and producing BIT_INSERT_EXPR which just happen to produce better code for bfi1 but worse code for bfi1_1), without my lowering bfi1 uses three instructions to do the insert. Also I filed PR 93171 (for a powerpc64 case) to show what is going on and without the side comments. The code from PR 93171 came from an inner kernel of the network forwarding code on Octeon (MIPS) processor.