On Thu, 9 Nov 2017, Jakub Jelinek wrote:
The gcc.dg/store_merging_13.c testcase worked when I was bootstrapping the patch that introduced it, but doesn't anymore, because match.pd had a ~X ^ Y -> ~(X ^ Y) transformation, the code was handling only ~ on the loads (== arguments of &/|/^) but not on the result of the bitwise binary operation.
Sorry about that. If this canonicalization causes too much trouble, we could revert it (it isn't important to me). Although it looks like you managed to extend the store merging code nicely instead :-)
-- Marc Glisse