https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96692
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Gabriel Ravier from comment #3) > This seems to be fixed on trunk now, I think ? On x86_64-linux-gnu yes but on aarch64 it is not optimized just yet: f(int, int, int): eor w1, w0, w1 orr w0, w0, w2 eor w0, w1, w0 ret f1(int, int, int): bic w0, w2, w0 eor w0, w0, w1 ret