There was at least one reason...
long double x87me(long double a, long double b) { return a+b; } pushq %rbp movq %rsp, %rbp fldt 32(%rbp) fldt 16(%rbp) faddp %st(1) popq %rbp retq