https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92695
--- Comment #13 from Jakub Jelinek <jakub at gcc dot gnu.org> --- For #c12, I think that is because of: 5615 /* Defer virtual destructors so that thunks get the right 5616 linkage. */ 5617 if (DECL_VIRTUAL_P (decl) && !at_eof) 5618 { 5619 note_vague_linkage_fn (decl); 5620 return true; 5621 } which makes mark_used not to synthesize those until end of TU. Not really sure how to fix that, shall we if constexpr synthesize them early anyway, but only register for constexpr evaluation and undo other effects of the synthesize_method? Or handle specially during constexpr evaluation each time we see those (or just first time, by remembering the body)?