https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90106
Alexander Monakov <amonakov at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |NEW Last reconfirmed| |2019-04-16 CC| |amonakov at gcc dot gnu.org Resolution|INVALID |--- Ever confirmed|0 |1 --- Comment #6 from Alexander Monakov <amonakov at gcc dot gnu.org> --- Reopening and confirming, GCC's code looks less efficient than possible for no good reason. CDCE does y = sqrt (x); ==> y = IFN_SQRT (x); if (__builtin_isless (x, 0)) sqrt (x); but it could do y = IFN_SQRT (x); if (__builtin_isless (x, 0)) y = sqrt (x); (note two assignments to y) or to mimic LLVM's approach: if (__builtin_isless (x, 0)) y = sqrt (x); else y = IFN_SQRT (x);