https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109938
Drew Ross <drross at redhat dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |drross at redhat dot com --- Comment #2 from Drew Ross <drross at redhat dot com> --- Expanding the pattern as follows: ((a^c) & b) | a --> (a | (a^c)) & (a | b) allows other patterns to make the simplification. Namely (a | (a^c)) -> a | c, then (a | c) & (a | b) -> a | (b & c). This type of expansion also generalizes nicely to patterns like ((a^c) | b) | a -> a | b | c which can be done through a similar series of simplifications after expanding the initial. This brings up the infrastructure question for 3+ operators if it is worth it to try all (or maybe most?) pairwise simplifications (for instance even in the case of (a ^ c) | b | d | e | f | g | h | a). Thoughts?