https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79176
Jason Merrill <jason at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED CC| |jason at gcc dot gnu.org Component|middle-end |c++ Assignee|unassigned at gcc dot gnu.org |jason at gcc dot gnu.org --- Comment #4 from Jason Merrill <jason at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #2) > To me this sounds like a mismatch between the middle-end type_with_linkage_p > and the C++ FE no_linkage_check. Perhaps the former should call the latter > using a langhook? no_linkage_check is wrong here. It decides that the lambda has no linkage because ~Item is !TREE_PUBLIC, so it doesn't have "vague linkage". ~Item is !TREE_PUBLIC because it's the maybe-in-charge constructor which is internal to its comdat group, but it can appear in multiple translation units so it really does have vague linkage. I'll fix.