https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100864
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Richard Biener from comment #3) > You can possibly merge it with the That is where I put it already, the ... was actually that part. Obviously this was not a patch just showing what was done. > > by using sth like logical_inverted_value (you want bit_inverted_value), > > Also you don't need > > (for cmp (tcc_comparison) > (for icmp (tcc_comparison) > > but just > > (for cmp (tcc_comparison) > icmp (inverted_tcc_comparison) > ncmp (inverted_tcc_comparison_with_nans)) > ... > (if (ic == icmp || ic == ncmp) > ... > > right? Does not work as there would be many of the same patterns with the above for loop as inverted_tcc_comparison and inverted_tcc_comparison_with_nans have a non empty intersection. The reason why it worked for the other usage of inverted_tcc_comparison/inverted_tcc_comparison_with_nans is because it was the resulting pattern rather than the matching pattern.