austern 03/01/03 16:04:18 Modified: live/gcc3/gcc/cp class.c cp-tree.h decl.c decl2.c pt.c Log: Reviewed by: Geoff Cosmetic changes due to submitting a patch to FSF. Revision Changes Path 1.41 +5 -12 src/live/gcc3/gcc/cp/class.c Index: class.c =================================================================== RCS file: /cvs/Darwin/src/live/gcc3/gcc/cp/class.c,v retrieving revision 1.40 retrieving revision 1.41 diff -u -r1.40 -r1.41 --- class.c 2002/12/24 17:27:26 1.40 +++ class.c 2003/01/04 00:04:15 1.41 @@ -5475,12 +5475,7 @@ method = TREE_CHAIN (method)) if (DECL_VINDEX (method) != NULL_TREE && ! DECL_DECLARED_INLINE_P (method) - && (! DECL_PURE_VIRTUAL_P (method) -#if 0 - /* This would be nice, but we didn't think of it in time. */ - || DECL_DESTRUCTOR_P (method) -#endif - )) + && ! DECL_PURE_VIRTUAL_P (method)) return method; return NULL_TREE; @@ -5534,12 +5529,10 @@ { CLASSTYPE_KEY_METHOD (t) = key_method (t); - /* If a polymorphic class has no key method, emit the vtable in - every translation unit where the class definition appear. */ - if (CLASSTYPE_KEY_METHOD (t) == NULL_TREE && !processing_template_decl) - { - dynamic_classes = tree_cons (NULL_TREE, t, dynamic_classes); - } + /* If a polymorphic class has no key method, we may emit the vtable + in every translation unit where the class definition appears. */ + if (CLASSTYPE_KEY_METHOD (t) == NULL_TREE) + keyed_classes = tree_cons (NULL_TREE, t, keyed_classes); } /* Layout the class itself. */ 1.77 +2 -2 src/live/gcc3/gcc/cp/cp-tree.h Index: cp-tree.h =================================================================== RCS file: /cvs/Darwin/src/live/gcc3/gcc/cp/cp-tree.h,v retrieving revision 1.76 retrieving revision 1.77 diff -u -r1.76 -r1.77 --- cp-tree.h 2002/12/24 17:27:26 1.76 +++ cp-tree.h 2003/01/04 00:04:15 1.77 @@ -615,7 +615,7 @@ CPTI_DSO_HANDLE, CPTI_DCAST, - CPTI_DYNAMIC_CLASSES, + CPTI_KEYED_CLASSES, /* APPLE LOCAL begin 2.95-ptmf-compatibility turly 20020313 */ CPTI_DELTA2_IDENTIFIER, @@ -764,7 +764,7 @@ /* A TREE_LIST of the dynamic classes whose vtables may have to be emitted in this translation unit. */ -#define dynamic_classes cp_global_trees[CPTI_DYNAMIC_CLASSES] +#define keyed_classes cp_global_trees[CPTI_KEYED_CLASSES] /* Global state. */ 1.126 +9 -8 src/live/gcc3/gcc/cp/decl.c Index: decl.c =================================================================== RCS file: /cvs/Darwin/src/live/gcc3/gcc/cp/decl.c,v retrieving revision 1.125 retrieving revision 1.126 diff -u -r1.125 -r1.126 --- decl.c 2002/12/24 17:27:26 1.125 +++ decl.c 2003/01/04 00:04:15 1.126 @@ -14970,15 +14970,16 @@ && DECL_VIRTUAL_P (fndecl) && !processing_template_decl) { - tree fnclass = DECL_CLASS_CONTEXT (fndecl); + tree fnclass = DECL_CONTEXT (fndecl); if (fndecl == CLASSTYPE_KEY_METHOD (fnclass)) - { - /* If the function we thought was the key method turns out - to be inline, then the class has no key method. */ - if (DECL_DECLARED_INLINE_P (fndecl)) - CLASSTYPE_KEY_METHOD (fnclass) = NULL_TREE; - - dynamic_classes = tree_cons (NULL_TREE, fnclass, dynamic_classes); + { + /* If the function we thought was the key method turns out + to be inline, then the class has no key method. (This + isn't what the C++ ABI document calls for, but it's what + we did in 3.1) */ + if (DECL_DECLARED_INLINE_P (fndecl)) + CLASSTYPE_KEY_METHOD (fnclass) = NULL_TREE; + keyed_classes = tree_cons (NULL_TREE, fnclass, keyed_classes); } } /* APPLE LOCAL end improved vtable emission fsf candidate */ 1.101 +4 -4 src/live/gcc3/gcc/cp/decl2.c Index: decl2.c =================================================================== RCS file: /cvs/Darwin/src/live/gcc3/gcc/cp/decl2.c,v retrieving revision 1.100 retrieving revision 1.101 diff -u -r1.100 -r1.101 --- decl2.c 2002/12/24 17:27:27 1.100 +++ decl2.c 2003/01/04 00:04:16 1.101 @@ -2852,14 +2852,14 @@ vtables then we remove the class from our list so we don't have to look at it again. */ - while (dynamic_classes != NULL_TREE - && maybe_emit_vtables (TREE_VALUE (dynamic_classes))) + while (keyed_classes != NULL_TREE + && maybe_emit_vtables (TREE_VALUE (keyed_classes))) { reconsider = 1; - dynamic_classes = TREE_CHAIN (dynamic_classes); + keyed_classes = TREE_CHAIN (keyed_classes); } - t = dynamic_classes; + t = keyed_classes; if (t != NULL_TREE) { tree next = TREE_CHAIN (t); 1.36 +1 -1 src/live/gcc3/gcc/cp/pt.c Index: pt.c =================================================================== RCS file: /cvs/Darwin/src/live/gcc3/gcc/cp/pt.c,v retrieving revision 1.35 retrieving revision 1.36 diff -u -r1.35 -r1.36 --- pt.c 2002/12/24 17:27:27 1.35 +++ pt.c 2003/01/04 00:04:16 1.36 @@ -5471,7 +5471,7 @@ /* APPLE LOCAL begin improved vtable emission fsf candidate */ if (TYPE_CONTAINS_VPTR_P (type)) - dynamic_classes = tree_cons (NULL_TREE, type, dynamic_classes); + keyed_classes = tree_cons (NULL_TREE, type, keyed_classes); /* APPLE LOCAL end improved vtable emission fsf candidate */ return type;