Compilers used to use its 80-bit floating point registers for 64-bit float computations, but also might spill them to memory as 64-bit float numbers.
https://hal.science/hal-00128124v3/file/floating-point.pdf section 3 has some examples, including one where the assert can fail in:
int main (void) { double x = 0x1p-1022, y = 0x1p100, z; do_nothing(&y); z = x / y; if (z != 0) { do_nothing(&z); assert(z != 0); } }
void do nothing (double *x) { }
Compilers used to use its 80-bit floating point registers for 64-bit float computations, but also might spill them to memory as 64-bit float numbers.
https://hal.science/hal-00128124v3/file/floating-point.pdf section 3 has some examples, including one where the assert can fail in:
with in a different compilation unit.