https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84805
--- Comment #6 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- We have an ordering issue because of forward declarations: class XclImpRoot : XclRoot {}; class XclImpColRowSettings : XclImpRoot {}; register_odr_type called on XclImpRoot causes get_odr_type to assign the id number to XclImpColRowSettings before XclImpRoot because the base class: class XclRoot { public: virtual ~XclRoot(); XclRootData &mrData; }; has an XclRootData field which ultimately references: struct RootData { BiffTyp eDateiTyp; ExtSheetBuffer *pExtSheetBuff; SharedFormulaBuffer *pShrfmlaBuff; ExtNameBuff *pExtNameBuff; ExcelToSc *pFmlaConverter; XclImpColRowSettings *pColRowBuff; }; which contains a pointer to XclImpColRowSettings.