https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116331
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- The difference between __builtin_cos and ::cos is mainly that the former doesn't need to be declared and that it acts as a builtin even with -fno-builtin or -fno-builtin-cos. If -fno-builtin* isn't used and ::cos is extern "C" with the right prototype, they behave the same, they can be constant folded (and the constant folding uses mpfr under the hood and ought to be ultimately precise), but if they aren't constant folded, the library routine is still used and that can and often has worse precision.