[Bug c++/94616] [8 Regression] Incorrect destruction for partially built objects

redi at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Apr 16 10:30:05 GMT 2020


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94616

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |paolo at gcc dot gnu.org

--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> ---
The regression started with Paolo's r186058:

    re PR c++/50043 ([C++0x] Implement core/1123)

            PR c++/50043
            * class.c (deduce_noexcept_on_destructor,
            deduce_noexcept_on_destructors): New.
            (check_bases_and_members): Call the latter.
            * decl.c (grokfndecl): Call the former.
            * method.c (implicitly_declare_fn): Not static.
            * cp-tree.h (deduce_noexcept_on_destructor, implicitly_declare_fn):
            Declare

For gcc-4.8 and gcc-4.9 using -fPIC makes it pass, but then since gcc-5 it
fails even with -fPIC, due to Jason's r213307:

    re PR lto/53808 (Undefined symbol when building a library with lto)

            PR lto/53808
            PR c++/61659
            * pt.c (push_template_decl_real): Set DECL_COMDAT on templates.
            (check_explicit_specialization): Clear it on specializations.
            * decl.c (duplicate_decls, start_decl): Likewise.
            (grokmethod, grokfndecl): Set DECL_COMDAT on inlines.
            * method.c (implicitly_declare_fn): Set DECL_COMDAT.  Determine
            linkage after setting the appropriate flags.
            * tree.c (decl_linkage): Don't check DECL_COMDAT.
            * decl2.c (mark_needed): Mark clones.
            (import_export_decl): Not here.


More information about the Gcc-bugs mailing list