On Fri, Nov 10, 2017 at 04:51:19PM +0000, Kyrill Tkachov wrote: > Hi Jakub, > > On 10/11/17 13:59, Jakub Jelinek wrote: > > This is something Uros requested in the PR, at least with BIT_NOT_EXPRs > > it is easy. Previous store merging changes required that bit_not_p > > is equal on all stores in the group (in all 3 spots, i.e. on the result > > of BIT_{AND,IOR,XOR}_EXPR and on both of the operands). > > > > This patch handles mixed values of that flag. If none of the > > orig_stores have a particular bit_not_p set, then as previously nothing > > is inverted, if all of them have it set, then as previously we > > BIT_NOT_EXPR > > the particular SSA_NAME, and newly if there is a mix of false and true > > in a particular bit_not_p, we compute a mask and BIT_XOR_EXPR it, this > > invert only the bits that were bit_not_p and not the others. > > > > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? > > > > Might be worth doing a sanity check test run on a big-endian target > since there is a bit of BYTES_BIG_ENDIAN logic in the patch (though it looks > correct to me).
Indeed. Successfully bootstrapped/regtested also on powerpc64{,le}-linux now. Jakub