diff options
author | Mark Mitchell <mark@codesourcery.com> | 2004-10-07 17:48:36 +0000 |
---|---|---|
committer | Mark Mitchell <mark@codesourcery.com> | 2004-10-07 17:48:36 +0000 |
commit | 466597a40b5b1d2a1177e991570cb62b42ffb4c9 (patch) | |
tree | 8114b15819ae2f47168dcdfac92c99c8df72ce80 /gcc/cp/search.c | |
parent | 7095ad240c0d7b9a4cdd5eb7a30feeb823cb3eab (diff) |
* cp-tree.h (ICS_USER_FLAG): Remove comment about obsolete flag.
(DECL_MEMBER_TEMPLATE_P): New macro.
(is_member_template): Remove.
(class_method_index_for_fn): New function.
* pt.c (build_over_call): Use DECL_MEMBER_TEMPLATE_P.
* class.c (finish_struct_methods): Remove out-of-date comment.
* decl.c (copy_fn_p): Use DECL_MBMER_TEMPLATE_P.
* decl2.c (check_classfn): Use DECL_MEMBER_TEMPLATE_P and
class_method_index_for_fn.
* pt.c (is_member_template): Remove.
(is_member_template_class): Likewise.
(optimize_specialization_lookup_p): New function.
(retrieve_specialization): Optimize lookups for members that are
not member templates.
(register_specialization): Adjust accordingly.
(build_template_decl): Add member_template_p parameter. Set
DECL_MEMBER_TEMPLATE_P.
(process_partial_specialization): Adjust call to
retrieve_specialization.
(push_template_decl_real): Determine whether the template is a
member template.
(lookup_template_class): Use retrieve_specialization.
(tsubst_decl): Adjust call to retrieve_specialization.
(tsubst_exception_specification): New function.
(tsubst): Use it.
(tsubst_copy): Use DECL_MEMBER_TEMPLATE_P.
(instantiate_template): Adjust call to retrieve_specialization.
(regenerate_decl_from_template): Do not actually generate a new
DECL.
(instantiate_decl): Adjust call to retrieve_specialization.
(class_method_index_for_fn): New method.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@88697 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cp/search.c')
-rw-r--r-- | gcc/cp/search.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/cp/search.c b/gcc/cp/search.c index 47d08f34c74..514f868692d 100644 --- a/gcc/cp/search.c +++ b/gcc/cp/search.c @@ -1464,6 +1464,22 @@ lookup_fnfields_1 (tree type, tree name) return -1; } +/* Like lookup_fnfields_1, except that the name is extracted from + FUNCTION, which is a FUNCTION_DECL or a TEMPLATE_DECL. */ + +int +class_method_index_for_fn (tree class_type, tree function) +{ + gcc_assert (TREE_CODE (function) == FUNCTION_DECL + || DECL_FUNCTION_TEMPLATE_P (function)); + + return lookup_fnfields_1 (class_type, + DECL_CONSTRUCTOR_P (function) ? ctor_identifier : + DECL_DESTRUCTOR_P (function) ? dtor_identifier : + DECL_NAME (function)); +} + + /* DECL is the result of a qualified name lookup. QUALIFYING_SCOPE is the class or namespace used to qualify the name. CONTEXT_CLASS is the class corresponding to the object in which DECL will be used. |