https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83661
--- Comment #5 from Alexander Monakov <amonakov at gcc dot gnu.org> --- sincos performs range reduction for the argument just once, which is fairly important. A well-optimized sincos also shares some computations for the sin/cos parts, as done in https://github.com/ARM-software/optimized-routines/blob/master/math/sincosf.c I think in part the sincos pass was motivated by the fsincos instruction on the x87 fpu, which is also faster than two fsin+fcos instructions separately. (fwiw I'm against adding such transforms to the compiler)