https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96600
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Printing the numbers in detail (for all of them the long double and the two double portions after that)): a -0x1.f1d5d27f89914ab924b2cd099500000000p+69 -0x1.f1d5d27f89915000p+69 0x1.51b6d34cbd9ac000p+15 b -0x1.f1d5d27f89914ab924b2cd099500000000p+69 -0x1.f1d5d27f89915000p+69 0x1.51b6d34cbd9ac000p+15 aa 0x1.51b6d34cbd9ac000000000000000000000p+15 0x1.51b6d34cbd9ac000p+15 0x0.0000000000000000p+0 bb -0x1.2cb3426540000000000000000000000000p-1 -0x1.2cb3426540000000p-1 0x0.0000000000000000p+0 tmp1 -0x1.f1d5d27f89915000000000000000000000p+69 -0x1.f1d5d27f89915000p+69 0x0.5000000000000000p-1022 tmp2 -0x1.f1d5d27f89914ab9200000000000000000p+69 -0x1.f1d5d27f89915000p+69 0x1.51b8000000000000p+15 But e.g. __builtin_truncl works the same on both, I'll have a look in a debugger.