------- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-02-09 
02:53 -------
Subject: Bug 19733

CVSROOT:        /cvs/gcc
Module name:    gcc
Changes by:     [EMAIL PROTECTED]       2005-02-09 02:53:44

Modified files:
        gcc/testsuite  : ChangeLog 
        gcc/cp         : ChangeLog class.c cp-tree.def cp-tree.h cvt.c 
                         decl.c except.c init.c method.c parser.c pt.c 
                         ptree.c rtti.c search.c typeck.c 
Added files:
        gcc/testsuite/g++.dg/parse: crash23.C 
        gcc/testsuite/g++.dg/warn: Weff1.C 

Log message:
        PR c++/19733
        * class.c (add_method): Don't set TYPE_HAS_DESTRUCTOR.
        (check_bases): Give warnings about a base class with a
        non-virtual destructor, even if it is implicit.
        (finish_struct_bits): Don't copy TYPE_HAS_DESTRUCTOR.
        (maybe_warn_about_overly_private_class): Don't use
        TYPE_HAS_DESTRUCTOR.
        (finish_struct_methods): Don't set TYPE_HAS_DESTRUCTOR.
        (check_for_override): Give it external linkage.
        (add_implicitly_declared_members): Generate destructors lazily.
        (check_field_decls): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR, not
        TYPE_HAS_DESTRUCTOR.
        (check_bases_and_members): Call check_methods before
        check_field_decls.
        (check_bases_and_members): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR, not
        TYPE_HAS_DESTRUCTOR.
        (finish_struct_1): Do not use TYPE_HAS_DESTRUCTOR.
        * cp-tree.def (PSEUDO_DTOR_EXPR): Document.
        * cp-tree.h (TYPE_HAS_DESTRUCTOR): Remove.
        (lang_type_class): Add lazy_destructor.
        (CLASSTYPE_LAZY_DESTRUCTOR): New macro.
        (CLASSTYPE_DESTRUCTORS): Robustify.
        (TYPE_HAS_DESTRUCTOR): Remove.
        (check_for_override): Declare.
        (build_vbase_delete): Remove.
        * cvt.c (convert_to_void): Issue errors about pseudo-destructor
        expressions.
        * decl.c (cxx_maybe_build_cleanup): Remove dead code.
        * except.c (dtor_nothrow): Lazily create destructors if necessary.
        (build_throw): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
        * init.c (build_delete): Lazily create destructors, if necessary.
        (build_vbase_delete): Remove.
        * method.c (locate_dtor): Simplify.
        (implicitly_declare_fn): Add support for destructors.
        * parser.c (cp_parser_lookup_name): Lazily create destructors, if
        necessary.
        * pt.c (check_explicit_specialization): Don't use
        TYPE_HAS_DESTRUCTOR.
        (instantiate_class_template): Likewise.
        * ptree.c (cxx_print_type): Don't print TYPE_HAS_DESTRUCTOR.
        * rtti.c (emit_support_tinfos): Robustify.
        * search.c (lookup_fnfields_1): Lazily create destructors.
        * typeck.c (build_class_member_access_expr): Remove
        PSEUDO_DTOR_EXPR handling.
        (lookup_destructor): Likewise.
        
        PR c++/19733
        * g++.dg/parse/crash23.C: New test.
        * g++.dg/warn/Weff1.C: New test.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.5004&r2=1.5005
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/crash23.C.diff?cvsroot=gcc&r1=1.1&r2=1.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/warn/Weff1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&r1=1.4617&r2=1.4618
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/class.c.diff?cvsroot=gcc&r1=1.702&r2=1.703
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/cp-tree.def.diff?cvsroot=gcc&r1=1.92&r2=1.93
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/cp-tree.h.diff?cvsroot=gcc&r1=1.1102&r2=1.1103
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/cvt.c.diff?cvsroot=gcc&r1=1.179&r2=1.180
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/decl.c.diff?cvsroot=gcc&r1=1.1359&r2=1.1360
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/except.c.diff?cvsroot=gcc&r1=1.178&r2=1.179
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/init.c.diff?cvsroot=gcc&r1=1.409&r2=1.410
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/method.c.diff?cvsroot=gcc&r1=1.320&r2=1.321
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/parser.c.diff?cvsroot=gcc&r1=1.312&r2=1.313
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/pt.c.diff?cvsroot=gcc&r1=1.973&r2=1.974
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ptree.c.diff?cvsroot=gcc&r1=1.45&r2=1.46
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/rtti.c.diff?cvsroot=gcc&r1=1.209&r2=1.210
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/search.c.diff?cvsroot=gcc&r1=1.343&r2=1.344
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/typeck.c.diff?cvsroot=gcc&r1=1.612&r2=1.613



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19733

Reply via email to