http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59424
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Marek Polacek from comment #1) > I can observe the same behavior with trunk. > > For func2, we compute a < b ? a : b first and then call sqrtf on that, while > for func3 we have return a < b ? ABS_EXPR <a> : ABS_EXPR <b>;. Perhaps > that's the reason why ifcvt doesn't optimize this using UNSPEC_IEEE_MIN. Yep. Obviously it cannot after that distribution of ABS_EXPR.