From cbd63935d8cb0edec8d27a7c427106b41d85a29f Mon Sep 17 00:00:00 2001 From: Kriang Lerdsuwanakij Date: Fri, 1 Aug 2003 15:06:02 +0000 Subject: PR c++/8442, c++/8806 PR c++/8442, c++/8806 * decl.c (qualify_lookup): Accept TEMPLATE_DECL if types are preferred. (check_elaborated_type_specifier): Add allow_template_p parameter. Check tag mismatch and class template. (xref_tag): Add template_header_p parameter. Add assertion that name is an IDENTIFIER_NODE. Remove implicit typename warning. Simplify lookup process if globalize is true. (cxx_init_decl_processing): Adjust call to xref_tag. (xref_tag_from_type): Likewise. * decl2.c (handle_class_head): Likewise. * parser.c (cp_parser_elaborated_type_specifier, cp_parser_class_head): Likewise. * rtti.c (init_rtti_processing, build_dynamic_cast1, tinfo_base_init, emit_support_tinfos): Likewise. * class.c (is_base_of_enclosing_class): Remove. * pt.c (convert_template_argument): Don't accept RECORD_TYPE as template template argument. * cp-tree.h (xref_tag): Adjust declaration. (is_base_of_enclosing_class): Remove. * NEWS: Document template template argument change. * g++.dg/template/elab1.C: Likewise. * g++.dg/template/type2.C: Likewise. * g++.dg/template/ttp3.C: Adjust expected error message. * g++.old-deja/g++.law/visibility13.C: Likewise. * g++.old-deja/g++.niklas/t135.C: Likewise. * g++.old-deja/g++.pt/ttp41.C: Likewise. * g++.old-deja/g++.pt/ttp43.C: Use qualified name for template template argument. * g++.old-deja/g++.pt/ttp44.C: Likewise. From-SVN: r70048 --- gcc/cp/rtti.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'gcc/cp/rtti.c') diff --git a/gcc/cp/rtti.c b/gcc/cp/rtti.c index baaff74..5e3437f 100644 --- a/gcc/cp/rtti.c +++ b/gcc/cp/rtti.c @@ -120,7 +120,7 @@ init_rtti_processing (void) push_namespace (std_identifier); type_info_type_node = xref_tag (class_type, get_identifier ("type_info"), - /*attributes=*/NULL_TREE, 1); + /*attributes=*/NULL_TREE, true, false); pop_namespace (); const_type_info_type = build_qualified_type (type_info_type_node, TYPE_QUAL_CONST); @@ -639,7 +639,7 @@ build_dynamic_cast_1 (tree type, tree expr) tinfo_ptr = xref_tag (class_type, get_identifier ("__class_type_info"), /*attributes=*/NULL_TREE, - 1); + true, false); tinfo_ptr = build_pointer_type (build_qualified_type @@ -774,7 +774,7 @@ tinfo_base_init (tree desc, tree target) push_nested_namespace (abi_node); real_type = xref_tag (class_type, TINFO_REAL_NAME (desc), - /*attributes=*/NULL_TREE, 1); + /*attributes=*/NULL_TREE, true, false); pop_nested_namespace (abi_node); if (!COMPLETE_TYPE_P (real_type)) @@ -1371,7 +1371,7 @@ emit_support_tinfos (void) bltn_type = xref_tag (class_type, get_identifier ("__fundamental_type_info"), /*attributes=*/NULL_TREE, - 1); + true, false); pop_nested_namespace (abi_node); if (!COMPLETE_TYPE_P (bltn_type)) return; -- cgit v1.1