https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109378
g.peterh...@t-online.de changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|INVALID |FIXED --- Comment #11 from g.peterh...@t-online.de --- Ok, in detail: std::sqrt/__builtin_sqrt performs the check for nan in the calling context. This causes the following problems: * the calling context contains error handling/conditional jumps, which have nothing to do there but have to be handled in the error handling of std::sqrt * Because this does NOT happen in your implementation of std::sqrt, the code gets bloated, at the latest when a function contains more than one std::sqrt. Therefore * do complete error handling in std::sqrt/__builtin_sqrt * so there is only one exact call for std::sqrt, which can/must be vectorized.