summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authornathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>2006-09-04 15:21:50 +0000
committernathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>2006-09-04 15:21:50 +0000
commit130bb1d415ea00a9462f26fb29fee980fee0ba8c (patch)
tree764968dae60c3f1936e60a86a285d648374b8c3e /gcc
parent95c1a2c58c557300c0d31c8cb550e511a76e3ec0 (diff)
downloadgcc-130bb1d415ea00a9462f26fb29fee980fee0ba8c.tar.gz
cp/
PR 23287 Revert my 2006-09-01 patch. * parser.c: Reverted. * pt.c: Reverted. testsuite/ PR c++/23287 Revert my 2006-09-01 patch * g++.dg/parse/dtor12.C: Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116679 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog20
-rw-r--r--gcc/cp/parser.c149
-rw-r--r--gcc/cp/pt.c8
-rw-r--r--gcc/testsuite/ChangeLog77
-rw-r--r--gcc/testsuite/g++.dg/parse/dtor12.C15
5 files changed, 96 insertions, 173 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 4568cb28a1b..673554f2dcf 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,12 +1,18 @@
+2006-09-04 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR 23287 Revert my 2006-09-01 patch.
+ * parser.c: Reverted.
+ * pt.c: Reverted.
+
2006-09-02 Lee Millward <lee.millward@codesourcery.com>
- PR c++/27670
- PR c++/27493
- PR c++/27494
- PR c++/27397
- * parser.c (cp_parser_template_parameter_list): Add
- invalid template parameters to the parameter list as
- error_mark_node.
+ PR c++/27670
+ PR c++/27493
+ PR c++/27494
+ PR c++/27397
+ * parser.c (cp_parser_template_parameter_list): Add
+ invalid template parameters to the parameter list as
+ error_mark_node.
2006-09-02 Jakub Jelinek <jakub@redhat.com>
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 72e1c920564..a4e5f37eece 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -1393,9 +1393,9 @@ static bool cp_parser_translation_unit
static tree cp_parser_primary_expression
(cp_parser *, bool, bool, bool, cp_id_kind *);
static tree cp_parser_id_expression
- (cp_parser *, bool, bool, bool *, bool, bool, bool);
+ (cp_parser *, bool, bool, bool *, bool, bool);
static tree cp_parser_unqualified_id
- (cp_parser *, bool, bool, bool, bool, bool);
+ (cp_parser *, bool, bool, bool, bool);
static tree cp_parser_nested_name_specifier_opt
(cp_parser *, bool, bool, bool, bool);
static tree cp_parser_nested_name_specifier
@@ -1720,7 +1720,7 @@ static bool cp_parser_check_template_parameters
static tree cp_parser_simple_cast_expression
(cp_parser *);
static tree cp_parser_global_scope_opt
- (cp_parser *, bool, bool);
+ (cp_parser *, bool);
static bool cp_parser_constructor_declarator_p
(cp_parser *, bool);
static tree cp_parser_function_definition_from_specifiers_and_declarator
@@ -2182,8 +2182,7 @@ cp_parser_parse_and_diagnose_invalid_type_name (cp_parser *parser)
/*check_dependency_p=*/true,
/*template_p=*/NULL,
/*declarator_p=*/true,
- /*optional_p=*/false,
- /*member_p=*/false);
+ /*optional_p=*/false);
/* After the id-expression, there should be a plain identifier,
otherwise this is not a simple variable declaration. Also, if
the scope is dependent, we cannot do much. */
@@ -3062,8 +3061,7 @@ cp_parser_primary_expression (cp_parser *parser,
/*check_dependency_p=*/true,
&template_p,
/*declarator_p=*/false,
- /*optional_p=*/false,
- /*member_p=*/false);
+ /*optional_p=*/false);
if (id_expression == error_mark_node)
return error_mark_node;
token = cp_lexer_peek_token (parser->lexer);
@@ -3197,8 +3195,7 @@ cp_parser_id_expression (cp_parser *parser,
bool check_dependency_p,
bool *template_p,
bool declarator_p,
- bool optional_p,
- bool member_p)
+ bool optional_p)
{
bool global_scope_p;
bool nested_name_specifier_p;
@@ -3209,10 +3206,8 @@ cp_parser_id_expression (cp_parser *parser,
/* Look for the optional `::' operator. */
global_scope_p
- = (cp_parser_global_scope_opt (parser, /*current_scope_valid_p=*/false,
- /*object_scope_valid_p=*/member_p)
+ = (cp_parser_global_scope_opt (parser, /*current_scope_valid_p=*/false)
!= NULL_TREE);
-
/* Look for the optional nested-name-specifier. */
nested_name_specifier_p
= (cp_parser_nested_name_specifier_opt (parser,
@@ -3244,8 +3239,7 @@ cp_parser_id_expression (cp_parser *parser,
unqualified_id = cp_parser_unqualified_id (parser, *template_p,
check_dependency_p,
declarator_p,
- /*optional_p=*/false,
- /*member_p=*/false);
+ /*optional_p=*/false);
/* Restore the SAVED_SCOPE for our caller. */
parser->scope = saved_scope;
parser->object_scope = saved_object_scope;
@@ -3303,7 +3297,8 @@ cp_parser_id_expression (cp_parser *parser,
else
return cp_parser_unqualified_id (parser, template_keyword_p,
/*check_dependency_p=*/true,
- declarator_p, optional_p, member_p);
+ declarator_p,
+ optional_p);
}
/* Parse an unqualified-id.
@@ -3333,8 +3328,7 @@ cp_parser_unqualified_id (cp_parser* parser,
bool template_keyword_p,
bool check_dependency_p,
bool declarator_p,
- bool optional_p,
- bool member_p)
+ bool optional_p)
{
cp_token *token;
@@ -3462,7 +3456,6 @@ cp_parser_unqualified_id (cp_parser* parser,
if (cp_parser_parse_definitely (parser))
done = true;
}
-
/* In "N::S::~S", look in "N" as well. */
if (!done && scope && qualifying_scope)
{
@@ -3481,56 +3474,24 @@ cp_parser_unqualified_id (cp_parser* parser,
if (cp_parser_parse_definitely (parser))
done = true;
}
- /* In "p->~T", look in the scope given by "*p" as well. */
- else if (!done && member_p)
+ /* In "p->S::~T", look in the scope given by "*p" as well. */
+ else if (!done && object_scope)
{
- if (!object_scope)
- {
- /* It's a dependent expression, so just parse the
- dtor name. */
- tree id;
-
- if (template_keyword_p)
- /* It's a template-id. */
- id = cp_parser_template_id (parser, true,
- check_dependency_p,
- declarator_p);
- else
- {
- /* Otherwise, it's an ordinary identifier. */
- id = cp_parser_identifier (parser);
- /* If ID is a template type parm, then use that
- directly. */
- if (TREE_TYPE (id)
- && TREE_CODE (TREE_TYPE (id)) == TEMPLATE_TYPE_PARM)
- id = TREE_TYPE (id);
- }
-
- if (id != error_mark_node)
- id = build_nt (BIT_NOT_EXPR, id);
- return id;
- }
-
cp_parser_parse_tentatively (parser);
parser->scope = object_scope;
parser->object_scope = NULL_TREE;
parser->qualifying_scope = NULL_TREE;
type_decl
= cp_parser_class_name (parser,
- /*typename_keyword_p=*/false,
+ /*typename_keyword_p=*/false,
/*template_keyword_p=*/false,
none_type,
/*check_dependency=*/false,
/*class_head_p=*/false,
declarator_p);
- /* The name is not qualified, so reset the parser scopes
- so our callers do not get confused. */
- parser->object_scope = object_scope;
- parser->scope = NULL_TREE;
if (cp_parser_parse_definitely (parser))
done = true;
}
-
/* Look in the surrounding context. */
if (!done)
{
@@ -4521,12 +4482,11 @@ cp_parser_postfix_dot_deref_expression (cp_parser *parser,
parser->qualifying_scope = NULL_TREE;
parser->object_scope = NULL_TREE;
*idk = CP_ID_KIND_NONE;
-
/* Enter the scope corresponding to the type of the object
given by the POSTFIX_EXPRESSION. */
- scope = TREE_TYPE (postfix_expression);
- if (!dependent_p && scope)
+ if (!dependent_p && TREE_TYPE (postfix_expression) != NULL_TREE)
{
+ scope = TREE_TYPE (postfix_expression);
/* According to the standard, no expression should ever have
reference type. Unfortunately, we do not currently match
the standard in this respect in that our internal representation
@@ -4540,8 +4500,11 @@ cp_parser_postfix_dot_deref_expression (cp_parser *parser,
error ("%qE does not have class type", postfix_expression);
scope = NULL_TREE;
}
- else if (!dependent_p)
+ else
scope = complete_type_or_else (scope, NULL_TREE);
+ /* Let the name lookup machinery know that we are processing a
+ class member access expression. */
+ parser->context->object_type = scope;
/* If something went wrong, we want to be able to discern that case,
as opposed to the case where there was no SCOPE due to the type
of expression being dependent. */
@@ -4553,10 +4516,6 @@ cp_parser_postfix_dot_deref_expression (cp_parser *parser,
if (scope == error_mark_node)
postfix_expression = error_mark_node;
}
- /* Let the name lookup machinery know that we are processing a class
- member access expression. */
- parser->context->object_type = scope;
- parser->object_scope = scope;
/* Assume this expression is not a pseudo-destructor access. */
pseudo_destructor_p = false;
@@ -4594,8 +4553,7 @@ cp_parser_postfix_dot_deref_expression (cp_parser *parser,
/*check_dependency_p=*/true,
&template_p,
/*declarator_p=*/false,
- /*optional_p=*/false,
- /*member_p=*/true));
+ /*optional_p=*/false));
/* In general, build a SCOPE_REF if the member name is qualified.
However, if the name was not dependent and has already been
resolved; there is no need to build the SCOPE_REF. For example;
@@ -4800,9 +4758,7 @@ cp_parser_pseudo_destructor_name (cp_parser* parser,
*type = error_mark_node;
/* Look for the optional `::' operator. */
- cp_parser_global_scope_opt (parser,
- /*current_scope_valid_p=*/true,
- /*object_scop_valid_p=*/true);
+ cp_parser_global_scope_opt (parser, /*current_scope_valid_p=*/true);
/* Look for the optional nested-name-specifier. */
nested_name_specifier_p
= (cp_parser_nested_name_specifier_opt (parser,
@@ -5113,8 +5069,7 @@ cp_parser_new_expression (cp_parser* parser)
/* Look for the optional `::' operator. */
global_scope_p
= (cp_parser_global_scope_opt (parser,
- /*current_scope_valid_p=*/false,
- /*object_scope_valid_p=*/false)
+ /*current_scope_valid_p=*/false)
!= NULL_TREE);
/* Look for the `new' operator. */
cp_parser_require_keyword (parser, RID_NEW, "`new'");
@@ -5412,8 +5367,7 @@ cp_parser_delete_expression (cp_parser* parser)
/* Look for the optional `::' operator. */
global_scope_p
= (cp_parser_global_scope_opt (parser,
- /*current_scope_valid_p=*/false,
- /*object_scope_valid_p=*/false)
+ /*current_scope_valid_p=*/false)
!= NULL_TREE);
/* Look for the `delete' keyword. */
cp_parser_require_keyword (parser, RID_DELETE, "`delete'");
@@ -8068,8 +8022,7 @@ cp_parser_mem_initializer_id (cp_parser* parser)
/* Look for the optional `::' operator. */
global_scope_p
= (cp_parser_global_scope_opt (parser,
- /*current_scope_valid_p=*/false,
- /*object_scope_valid_p=*/false)
+ /*current_scope_valid_p=*/false)
!= NULL_TREE);
/* Look for the optional nested-name-specifier. The simplest way to
implement:
@@ -8648,8 +8601,7 @@ cp_parser_type_parameter (cp_parser* parser)
/*check_dependency_p=*/true,
/*template_p=*/&is_template,
/*declarator_p=*/false,
- /*optional_p=*/false,
- /*member_p=*/false);
+ /*optional_p=*/false);
if (TREE_CODE (default_argument) == TYPE_DECL)
/* If the id-expression was a template-id that refers to
a template-class, we already have the declaration here,
@@ -9214,8 +9166,7 @@ cp_parser_template_argument (cp_parser* parser)
/*check_dependency_p=*/true,
&template_p,
/*declarator_p=*/false,
- /*optional_p=*/false,
- /*member_p=*/false);
+ /*optional_p=*/false);
/* If the next token isn't a `,' or a `>', then this argument wasn't
really finished. */
if (!cp_parser_next_token_ends_template_argument_p (parser))
@@ -9855,8 +9806,7 @@ cp_parser_simple_type_specifier (cp_parser* parser,
/* Look for the optional `::' operator. */
global_p
= (cp_parser_global_scope_opt (parser,
- /*current_scope_valid_p=*/false,
- /*object_scope_valid_p=*/false)
+ /*current_scope_valid_p=*/false)
!= NULL_TREE);
/* Look for the nested-name specifier. */
qualified_p
@@ -10081,8 +10031,7 @@ cp_parser_elaborated_type_specifier (cp_parser* parser,
/* Look for the `::' operator. */
cp_parser_global_scope_opt (parser,
- /*current_scope_valid_p=*/false,
- /*object_scope_valid_p=*/false);
+ /*current_scope_valid_p=*/false);
/* Look for the nested-name-specifier. */
if (tag_type == typename_type)
{
@@ -10617,8 +10566,7 @@ cp_parser_qualified_namespace_specifier (cp_parser* parser)
{
/* Look for the optional `::'. */
cp_parser_global_scope_opt (parser,
- /*current_scope_valid_p=*/false,
- /*object_scope_valid_p=*/false);
+ /*current_scope_valid_p=*/false);
/* Look for the optional nested-name-specifier. */
cp_parser_nested_name_specifier_opt (parser,
@@ -10663,8 +10611,7 @@ cp_parser_using_declaration (cp_parser* parser)
/* Look for the optional global scope qualification. */
global_scope_p
= (cp_parser_global_scope_opt (parser,
- /*current_scope_valid_p=*/false,
- /*object_scope_valid_p=*/false)
+ /*current_scope_valid_p=*/false)
!= NULL_TREE);
/* If we saw `typename', or didn't see `::', then there must be a
@@ -10690,8 +10637,7 @@ cp_parser_using_declaration (cp_parser* parser)
/*template_keyword_p=*/false,
/*check_dependency_p=*/true,
/*declarator_p=*/true,
- /*optional_p=*/false,
- /*member_p=*/false);
+ /*optional_p=*/false);
/* The function we call to handle a using-declaration is different
depending on what scope we are in. */
@@ -10745,8 +10691,7 @@ cp_parser_using_directive (cp_parser* parser)
/* And the `namespace' keyword. */
cp_parser_require_keyword (parser, RID_NAMESPACE, "`namespace'");
/* Look for the optional `::' operator. */
- cp_parser_global_scope_opt (parser, /*current_scope_valid_p=*/false,
- /*object_scope_valid_p=*/false);
+ cp_parser_global_scope_opt (parser, /*current_scope_valid_p=*/false);
/* And the optional nested-name-specifier. */
cp_parser_nested_name_specifier_opt (parser,
/*typename_keyword_p=*/false,
@@ -11814,8 +11759,7 @@ cp_parser_ptr_operator (cp_parser* parser,
cp_parser_parse_tentatively (parser);
/* Look for the optional `::' operator. */
cp_parser_global_scope_opt (parser,
- /*current_scope_valid_p=*/false,
- /*object_scope_valid_p=*/false);
+ /*current_scope_valid_p=*/false);
/* Look for the nested-name specifier. */
cp_parser_nested_name_specifier (parser,
/*typename_keyword_p=*/false,
@@ -11955,8 +11899,7 @@ cp_parser_declarator_id (cp_parser* parser, bool optional_p)
/*check_dependency_p=*/false,
/*template_p=*/NULL,
/*declarator_p=*/true,
- optional_p,
- /*member_p=*/false);
+ optional_p);
if (id && BASELINK_P (id))
id = BASELINK_FUNCTIONS (id);
return id;
@@ -13161,8 +13104,7 @@ cp_parser_class_head (cp_parser* parser,
issuing an error about it later if this really is a
class-head. If it turns out just to be an elaborated type
specifier, remain silent. */
- if (cp_parser_global_scope_opt (parser, /*current_scope_valid_p=*/false,
- /*object_scope_valid_p=*/false))
+ if (cp_parser_global_scope_opt (parser, /*current_scope_valid_p=*/false))
qualified_p = true;
push_deferring_access_checks (dk_no_check);
@@ -14148,8 +14090,7 @@ cp_parser_base_specifier (cp_parser* parser)
}
/* Look for the optional `::' operator. */
- cp_parser_global_scope_opt (parser, /*current_scope_valid_p=*/false,
- /*object_scope_valid_p=*/false);
+ cp_parser_global_scope_opt (parser, /*current_scope_valid_p=*/false);
/* Look for the nested-name-specifier. The simplest way to
implement:
@@ -15198,8 +15139,7 @@ cp_parser_check_template_parameters (cp_parser* parser,
present, and NULL_TREE otherwise. */
static tree
-cp_parser_global_scope_opt (cp_parser* parser, bool current_scope_valid_p,
- bool object_scope_valid_p)
+cp_parser_global_scope_opt (cp_parser* parser, bool current_scope_valid_p)
{
cp_token *token;
@@ -15218,15 +15158,12 @@ cp_parser_global_scope_opt (cp_parser* parser, bool current_scope_valid_p,
return parser->scope;
}
-
- if (!current_scope_valid_p)
+ else if (!current_scope_valid_p)
{
parser->scope = NULL_TREE;
parser->qualifying_scope = NULL_TREE;
+ parser->object_scope = NULL_TREE;
}
-
- if (!object_scope_valid_p)
- parser->object_scope = NULL_TREE;
return NULL_TREE;
}
@@ -15264,8 +15201,7 @@ cp_parser_constructor_declarator_p (cp_parser *parser, bool friend_p)
/* Look for the optional `::' operator. */
cp_parser_global_scope_opt (parser,
- /*current_scope_valid_p=*/false,
- /*object_scope_valid_p=*/false);
+ /*current_scope_valid_p=*/false);
/* Look for the nested-name-specifier. */
nested_name_p
= (cp_parser_nested_name_specifier_opt (parser,
@@ -17972,8 +17908,7 @@ cp_parser_omp_var_list_no_open (cp_parser *parser, enum omp_clause_code kind,
/*check_dependency_p=*/true,
/*template_p=*/NULL,
/*declarator_p=*/false,
- /*optional_p=*/false,
- /*member_p=*/false);
+ /*optional_p=*/false);
if (name == error_mark_node)
goto skip_comma;
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index c8081f65fb2..79d9de4e4ce 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -9200,14 +9200,6 @@ tsubst_copy_and_build (tree t,
member = tsubst_baselink (member,
non_reference (TREE_TYPE (object)),
args, complain, in_decl);
- else if (TREE_CODE (member) == BIT_NOT_EXPR
- && !TYPE_P (TREE_OPERAND (member, 0)))
- {
- tree id = TREE_OPERAND (member, 0);
- id = make_typename_type (object_type, id, typename_type, complain);
- gcc_assert (TREE_CODE (id) != TYPENAME_TYPE);
- member = build_nt (BIT_NOT_EXPR, id);
- }
else
member = tsubst_copy (member, args, complain, in_decl);
if (member == error_mark_node)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a1fdb4eb314..d2ca50ee831 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,19 +1,24 @@
+2006-09-04 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/23287 Revert my 2006-09-01 patch
+ * g++.dg/parse/dtor12.C: Remove.
+
2006-09-02 Lee Millward <lee.millward@codesourcery.com>
- PR c+/27670
- * g++.dg/template/operator9.C: New test.
+ PR c+/27670
+ * g++.dg/template/operator9.C: New test.
- PR c++/27493
- * g++.dg/template/operator7.C: New test.
+ PR c++/27493
+ * g++.dg/template/operator7.C: New test.
- PR c++/27494
- * g++.dg/template/operator8.C: New test.
+ PR c++/27494
+ * g++.dg/template/operator8.C: New test.
- PR c++/27397
- * g++.dg/template/crash57.C: New test.
+ PR c++/27397
+ * g++.dg/template/crash57.C: New test.
- * g++.dg/template/typedef4.C: Adjust error markers.
- * g++.dg/template/typedef5.C: Likewise.
+ * g++.dg/template/typedef4.C: Adjust error markers.
+ * g++.dg/template/typedef5.C: Likewise.
2006-09-02 Jakub Jelinek <jakub@redhat.com>
@@ -130,8 +135,8 @@
2006-08-27 Lee Millward <lee.millward@codesourcery.com>
- PR c++/26573
- * g++.dg/other/static2.C: New test.
+ PR c++/26573
+ * g++.dg/other/static2.C: New test.
2006-08-26 Roger Sayle <roger@eyesopen.com>
@@ -144,19 +149,19 @@
2006-08-26 Lee Millward <lee.millward@codesourcery.com>
- PR c++/28736
- * g++.dg/template/void10.C: New test.
+ PR c++/28736
+ * g++.dg/template/void10.C: New test.
- PR c++/28737
- * g++.dg/template/void8.C: New test.
+ PR c++/28737
+ * g++.dg/template/void8.C: New test.
- PR c+_+/28738
- * g++.dg/template/void9.C: New test.
+ PR c+_+/28738
+ * g++.dg/template/void9.C: New test.
- * g++.dg/template/void3.C: Adjust error markers.
- * g++.dg/template/void4.C: Likewise.
- * g++.dg/template/crash55.C: Likewise.
- * g++.dg/template/void7.C: Likewise
+ * g++.dg/template/void3.C: Adjust error markers.
+ * g++.dg/template/void4.C: Likewise.
+ * g++.dg/template/crash55.C: Likewise.
+ * g++.dg/template/void7.C: Likewise
2006-08-26 Mark Mitchell <mark@codesourcery.com>
@@ -267,7 +272,7 @@
2006-08-22 Andrew Pinski <pinskia@physics.uc.edu>
- PR C++/28450
+ PR C++/28450
* g++.dg/ext/vector4.C: New test.
* g++.dg/ext/complex1.C: New test.
@@ -292,15 +297,15 @@
2006-08-21 Lee Millward <lee.millward@codesourcery.com>
- PR c++/26269
- * g++.dg/other/error14.C: New test.
+ PR c++/26269
+ * g++.dg/other/error14.C: New test.
- PR c++/28505
- * g++.dg/parse/ctor7.C: New test.
- * g++.dg/parse/ctor8.C: Likewise.
+ PR c++/28505
+ * g++.dg/parse/ctor7.C: New test.
+ * g++.dg/parse/ctor8.C: Likewise.
PR c++/28741
- * g++.dg/template/void7.C: New test.
+ * g++.dg/template/void7.C: New test.
2006-08-21 Olivier Hainque <hainque@adacore.com>
@@ -742,14 +747,14 @@
2006-07-28 Lee Millward <lee.millward@codesourcery.com>
- PR c++/27668
- * g++.dg/template/crash55.C: New test.
+ PR c++/27668
+ * g++.dg/template/crash55.C: New test.
- PR c++/27962
- * g++.dg/template/nontype16.C: New test.
+ PR c++/27962
+ * g++.dg/template/nontype16.C: New test.
- * g++.dg/template/void2.C: Adjust error markers.
- * g++.dg/template/nontype5.C: Adjust error markers.
+ * g++.dg/template/void2.C: Adjust error markers.
+ * g++.dg/template/nontype5.C: Adjust error markers.
2006-07-27 Arjan van de Ven <arjan@linux.intel.com>
@@ -1620,7 +1625,7 @@
* gcc.dg/sibcall-7.c: Do not run on ia64-*-* platforms.
2006-06-05 Dorit Nuzman <dorit@il.ibm.com>
- Victor Kaplansky <victork@il.ibm.com>
+ Victor Kaplansky <victork@il.ibm.com>
PR tree-optimizations/26360
* gcc.dg/vect/vect.exp: Compile tests prefixed with "no-tree-dce"
diff --git a/gcc/testsuite/g++.dg/parse/dtor12.C b/gcc/testsuite/g++.dg/parse/dtor12.C
deleted file mode 100644
index d964662178e..00000000000
--- a/gcc/testsuite/g++.dg/parse/dtor12.C
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (C) 2006 Free Software Foundation, Inc.
-// Contributed by Nathan Sidwell 1 Sep 2006 <nathan@codesourcery.com>
-
-// PR 23287: Failure to parse dependent dtor name
-// Origin:Wolfgang Bangerth <bangerth@dealii.org>
-
-
-template <class T> struct A {};
-
-template <class T> void f(A<T> *ptr) {
- ptr->~A();
-}
-
-template void f<void> (A<void> *);
-