The fp-int-convert-long-double test does this: static volatile signed long long ivin, ivout; static volatile long double fv1, fv2; ivin = ((signed long long) (((unsigned long long) ~(unsigned long long) 0) >> 1)); fv1 = ((signed long long) (((unsigned long long) ~(unsigned long long) 0) >> 1)); fv2 = ivin; ivout = fv2;
When sizeof(long double) <= sizeof(long long), it cannot store that ~0 value in a long double.