https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101885
--- Comment #12 from Segher Boessenkool <segher at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #8)> The failed match attempt > (parallel [ > (set (reg:QI 82 [ b_lsm_flag.26 ]) > (and:QI (reg:QI 143) > (reg:QI 145))) > (set (reg:CCZ 17 flags) > (compare:CCZ (and:QI (reg:QI 143) > (reg:QI 145)) > (const_int 0 [0]))) > ]) > actually looks almost good, except that it would need to try them in the > other order in the parallel. > I must say I forgot whether the flags first then operation ordering is now > canonical everywhere, or whether some backends want one and others another > one. It is canonical, and has been since literally forever. 81ad201ac5f6 (from 2017) makes this explicit in our documentation. compare-elim.c used to get this wrong, but it was fixed in 4f0473fe89e6 (also 2017). > But I vaguely remember there are various passes that only work with the > ordering x86 has. Only compare-elim did. It was fixed.