https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102030
--- Comment #1 from Joe Eagar <joeedh at gmail dot com> --- I forgot to add, the offending function is BM_mesh_bm_from_me: void BM_mesh_bm_from_me(Object *ob, BMesh *bm, const Mesh *me, const struct BMeshFromMeshParams *params) { const bool is_new = !(bm->totvert || (bm->vdata.totlayer || bm->edata.totlayer || bm->pdata.totlayer || bm->ldata.totlayer)); MVert *mvert; MEdge *medge; MLoop *mloop; MPoly *mp; KeyBlock *actkey, *block; BMVert *v, **vtable = NULL; BMEdge *e, **etable = NULL; BMFace *f, **ftable = NULL; float(*keyco)[3] = NULL; int totloops, i; CustomData_MeshMasks mask = CD_MASK_BMESH; CustomData_MeshMasks_update(&mask, ¶ms->cd_mask_extra); if (params->copy_temp_cdlayers) { bm_unmark_temp_cdlayers(bm); } printf("1 ob: %p, %s\n", ob, ob ? "true" : "false"); fflush(stdout); printf("2 ob: %p, %s\n", ob, NULL ? "true" : "false"); fflush(stdout); printf("3 ob: %p, %s\n", ob, ((Object*)NULL) ? "true" : "false"); fflush(stdout); printf("4 ob: %p, %s\n", ob, ((Object*)0) ? "true" : "false"); fflush(stdout); MultiresModifierData *mmd; if (ob) { mmd = get_multires_modifier(NULL, ob, true); } else { mmd = NULL; } if (params->copy_temp_cdlayers) { mask.vmask |= CD_MASK_MESH_ID; mask.emask |= CD_MASK_MESH_ID; mask.lmask |= CD_MASK_MESH_ID; mask.pmask |= CD_MASK_MESH_ID; } if (mmd) { bm->multires = *mmd; bm->haveMultiResSettings = true; bm->multiresSpace = MULTIRES_SPACE_TANGENT; } else { bm->haveMultiResSettings = false; } if (ob) { printf("ob! %p\n", ob); } }