https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120604
David Binderman <dcb314 at hotmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |kyrylo.tkachov at arm dot com --- Comment #17 from David Binderman <dcb314 at hotmail dot com> --- (In reply to Uroš Bizjak from comment #16) > That's because you missed "The check in this additional patch is copied from > noce_try_cmove." part in Comment #13. The function appears to be in file gcc/ifcvt.c. git blame says: d27555bfeeb3 gcc/ifcvt.c (Kyrylo Tkachov 2015-08-13 09:11:13 +0000 1928) != ((ifalse < 0) != (itrue < 0) ? ifalse < 0 : ifalse < itrue)) I got as far as (cf < 0) != (ct < 0) perhaps means cf and ct have different signs. Although there might be something important about a zero value. Hard to say without explanatory comment. Adding original author for comment.