I've read both https://reviews.llvm.org/D63423 and https://reviews.llvm.org/D66397, but I think both of them miss the case where both RHS and LHS of the XOR are macros, and thus the warning should not be emitted (I think).
I ran into this while compiling elfutils with clang and all the available changes to the code seem non-sensical and the warning in clang seems misplaced given that both operands are macros, even if the left side evaluates to 2 and the right side to 10, for example. They are just used as state.
I know this warning (in conjunction with macros especially) has been discussed a lot in the past (as far as I know regarding the Chrome code base), but this patch is very conservative regarding the change to the warning semantics. And the case it changes was not even covered by the tests. I've added a test for it now.