https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109883
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> --- I think we need to move those __promote_{2,3} using templates for atan2, fmod, pow, copysign, fdim, fmax, fmin, hypot, nextafter, remainder, remquo and fma later, because right now we have the overloads with float, double and long double arguments, then these templates and later on _Float{16,32,64,128} and bfloat16_t overloads, and as those __promote_{2,3} templates call itself with promoted arguments, they self-recurse if the promoted arguments are _Float{16,32,64,128} or bfloat16_t.