On Wed, Jun 12, 2024 at 9:06 PM Rich Felker <dalias@libc.org> wrote:
But to get back to the point, on archs that are hard-float and don't
have an oversized soft-only long double, the size of the floating
point code in printf is around 6k.

Indeed. A particular example small emscripten program which doesn't call printf produces a 14450-byte output file.

Adding a call to `printf("%d\n", 0)` (which is optimized to a call to iprintf by the compiler):
  increases output size by 5769 bytes.
Adding a call to `printf("%f\n", 0.0)`, using the default emscripten printf, which has been modified to only support 'double' precision output:
  increases output size by 8413 bytes (2644 bytes more than the iprintf version).
Adding a call to `printf("%f\n", 0.0)`, using "-s PRINTF_LONG_DOUBLE" config option (thus enabling printf support for proper output of a 128-bit 'long double' type):
  increases output size by 13067 bytes (7298 above the iprintf version).

The 128-bit long double uses a soft-float implementation.