https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63332
--- Comment #5 from Richard PALO <richard at netbsd dot org> --- By the way, in gdb, here are the complete u and v variables after serialisation: gdb) p u $1 = {_M_param = {_M_lambda = 2, _M_mu = 1.5, _M_nu = 3}, _M_gd1 = { _M_param = {_M_alpha = 2, _M_beta = 0.5, _M_malpha = 2, _M_a2 = 0.25819888974716108}, _M_nd = {_M_param = {_M_mean = 0, _M_stddev = 1}, _M_saved = -1.0868180442613568, _M_saved_available = true}}, _M_gd2 = {_M_param = {_M_alpha = 3, _M_beta = 0.5, _M_malpha = 3, _M_a2 = 0.20412414523193152}, _M_nd = { _M_param = {_M_mean = 0, _M_stddev = 1}, _M_saved = 0.18913187340436784, _M_saved_available = true}}} (gdb) p v $2 = {_M_param = {_M_lambda = 2, _M_mu = 1.5, _M_nu = 3}, _M_gd1 = { _M_param = {_M_alpha = 2, _M_beta = 0.5, _M_malpha = 2, _M_a2 = 0.25819888974716108}, _M_nd = {_M_param = {_M_mean = 0, _M_stddev = 1}, _M_saved = -1.0868180442613568, _M_saved_available = true}}, _M_gd2 = {_M_param = {_M_alpha = 3, _M_beta = 0.5, _M_malpha = 3, _M_a2 = 0.20412414523193152}, _M_nd = { _M_param = {_M_mean = 0, _M_stddev = 1}, _M_saved = 0.1891318734043678, _M_saved_available = true}}} I notice _M_saved in v is truncated by 1 (the trailing '4')... that is, 16 and not 17 digits after the decimal are copied.