https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66700
--- Comment #1 from David Malcolm <dmalcolm at gcc dot gnu.org> --- Created attachment 35875 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=35875&action=edit Minimal reproducer This gimplifies to: test_caller_of_write_back_through_ptr () { <float:64> d.0; <float:64> D.59; <float:64> d; <D.57>: d = 4.0e+0; d.0 = d; write_back_through_ptr (&d.0); D.59 = d; return D.59; } where write_back_through_ptr modifies "d.0", but the return value uses "d", hence the result is "4.0", rather than the expected value of "5.600000".