https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61456
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- There is some aliasing issue going on here. FRE (correctly) removes: # .MEM_7 = VDEF <.MEM_8> MEM[(struct *)&fp + 8B] = 0; So it was being done by: # .MEM_4 = VDEF <.MEM_3> fp.__delta = 0; Already. Somehow DCE1 decides that is fully dead. >Note that there is no '__delta' in the original source, so the error message Well that is partly the front-end issue as it is pointer to member functions are implemented using a struct.