Hi, last year I removed the last use of cp_fold_obj_type_ref (which was a language hook) but forgot to remove the function itself. So I'm about to do it now.
I'm currently bootstrapping and testing the following patch. I consider it obvious enough to commit it myself on Tuesday if it passes. Thanks, Martin 2011-04-22 Martin Jambor <mjam...@suse.cz> * class.c (cp_fold_obj_type_ref): Remove. * cp-tree.h (cp_fold_obj_type_ref): Remove declaration. Index: src/gcc/cp/class.c =================================================================== --- src.orig/gcc/cp/class.c +++ src/gcc/cp/class.c @@ -8377,32 +8377,4 @@ build_rtti_vtbl_entries (tree binfo, vtb CONSTRUCTOR_APPEND_ELT (vid->inits, NULL_TREE, init); } -/* Fold a OBJ_TYPE_REF expression to the address of a function. - KNOWN_TYPE carries the true type of OBJ_TYPE_REF_OBJECT(REF). */ - -tree -cp_fold_obj_type_ref (tree ref, tree known_type) -{ - HOST_WIDE_INT index = tree_low_cst (OBJ_TYPE_REF_TOKEN (ref), 1); - HOST_WIDE_INT i = 0; - tree v = BINFO_VIRTUALS (TYPE_BINFO (known_type)); - tree fndecl; - - while (i != index) - { - i += (TARGET_VTABLE_USES_DESCRIPTORS - ? TARGET_VTABLE_USES_DESCRIPTORS : 1); - v = TREE_CHAIN (v); - } - - fndecl = BV_FN (v); - -#ifdef ENABLE_CHECKING - gcc_assert (tree_int_cst_equal (OBJ_TYPE_REF_TOKEN (ref), - DECL_VINDEX (fndecl))); -#endif - - return build_address (fndecl); -} - #include "gt-cp-class.h" Index: src/gcc/cp/cp-tree.h =================================================================== --- src.orig/gcc/cp/cp-tree.h +++ src/gcc/cp/cp-tree.h @@ -4713,7 +4713,6 @@ extern void note_name_declared_in_class extern tree get_vtbl_decl_for_binfo (tree); extern void debug_class (tree); extern void debug_thunks (tree); -extern tree cp_fold_obj_type_ref (tree, tree); extern void set_linkage_according_to_type (tree, tree); extern void determine_key_method (tree); extern void check_for_override (tree, tree);