------- Comment #6 from rguenth at gcc dot gnu dot org 2010-05-17 15:57 ------- Basically the middle-end sees this the same as
int i = 1, j; float *p = new (&i) float(0.0); j = i; return *reinterpret_cast<float *>(&j); and you expect to return 0.0. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44164