Commit 0e136342 by Mark Mitchell Committed by Mark Mitchell

re PR c++/9823 (ICE in sort_mem_initializers)

	PR c++/9823
	* cp-tree.h (begin_mem_initializers): Remove.
	* parser.c (cp_parser_mem_initializer_list): Inline it here.
	Do not call finish_mem_initializers if not in a constructor.
	(cp_parser_class_head): Fix typo in error message.
	* semantics.c (begin_mem_initializers): Remove.
	* testsuite/g++.dg/parser/constructor1.C: New test.

	PR c++/9823
	* g++.dg/parser/constructor1.C: New test.

From-SVN: r63999
parent 988d1653
2003-03-08 Mark Mitchell <mark@codesourcery.com> 2003-03-08 Mark Mitchell <mark@codesourcery.com>
PR c++/9823
* cp-tree.h (begin_mem_initializers): Remove.
* parser.c (cp_parser_mem_initializer_list): Inline it here.
Do not call finish_mem_initializers if not in a constructor.
(cp_parser_class_head): Fix typo in error message.
* semantics.c (begin_mem_initializers): Remove.
* testsuite/g++.dg/parser/constructor1.C: New test.
PR c++/9809 PR c++/9809
* call.c (add_function_candidate): Skip builtin fuctions that have * call.c (add_function_candidate): Skip builtin fuctions that have
not yet been declared. not yet been declared.
......
...@@ -4205,7 +4205,6 @@ extern void expand_body (tree); ...@@ -4205,7 +4205,6 @@ extern void expand_body (tree);
extern tree nullify_returns_r (tree *, int *, void *); extern tree nullify_returns_r (tree *, int *, void *);
extern void do_pushlevel (scope_kind); extern void do_pushlevel (scope_kind);
extern tree do_poplevel (void); extern tree do_poplevel (void);
extern void begin_mem_initializers (void);
extern void finish_mem_initializers (tree); extern void finish_mem_initializers (tree);
extern void setup_vtbl_ptr (tree, tree); extern void setup_vtbl_ptr (tree, tree);
extern void clear_out_block (void); extern void clear_out_block (void);
......
...@@ -7189,7 +7189,8 @@ cp_parser_mem_initializer_list (cp_parser* parser) ...@@ -7189,7 +7189,8 @@ cp_parser_mem_initializer_list (cp_parser* parser)
/* Let the semantic analysis code know that we are starting the /* Let the semantic analysis code know that we are starting the
mem-initializer-list. */ mem-initializer-list. */
begin_mem_initializers (); if (!DECL_CONSTRUCTOR_P (current_function_decl))
error ("only constructors take base initializers");
/* Loop through the list. */ /* Loop through the list. */
while (true) while (true)
...@@ -7212,7 +7213,8 @@ cp_parser_mem_initializer_list (cp_parser* parser) ...@@ -7212,7 +7213,8 @@ cp_parser_mem_initializer_list (cp_parser* parser)
} }
/* Perform semantic analysis. */ /* Perform semantic analysis. */
finish_mem_initializers (mem_initializer_list); if (DECL_CONSTRUCTOR_P (current_function_decl))
finish_mem_initializers (mem_initializer_list);
} }
/* Parse a mem-initializer. /* Parse a mem-initializer.
...@@ -11789,7 +11791,7 @@ cp_parser_class_head (cp_parser* parser, ...@@ -11789,7 +11791,7 @@ cp_parser_class_head (cp_parser* parser,
class was originally declared, the program is invalid. */ class was originally declared, the program is invalid. */
if (scope && !is_ancestor (scope, CP_DECL_CONTEXT (type))) if (scope && !is_ancestor (scope, CP_DECL_CONTEXT (type)))
{ {
error ("declaration of `%D' in `%D' which does not " error ("declaration of `%D' in `%D' which does not "
"enclose `%D'", type, scope, nested_name_specifier); "enclose `%D'", type, scope, nested_name_specifier);
return NULL_TREE; return NULL_TREE;
} }
......
...@@ -1142,15 +1142,6 @@ finish_eh_cleanup (cleanup) ...@@ -1142,15 +1142,6 @@ finish_eh_cleanup (cleanup)
add_stmt (r); add_stmt (r);
} }
/* Begin processing a mem-initializer-list. */
void
begin_mem_initializers ()
{
if (! DECL_CONSTRUCTOR_P (current_function_decl))
error ("only constructors take base initializers");
}
/* The MEM_INITS is a list of mem-initializers, in reverse of the /* The MEM_INITS is a list of mem-initializers, in reverse of the
order they were written by the user. Each node is as for order they were written by the user. Each node is as for
emit_mem_initializers. */ emit_mem_initializers. */
......
2003-03-08 Mark Mitchell <mark@codesourcery.com>
PR c++/9823
* g++.dg/parser/constructor1.C: New test.
2003-03-08 Hans-Peter Nilsson <hp@bitrange.com> 2003-03-08 Hans-Peter Nilsson <hp@bitrange.com>
* gcc.c-torture/execute/20020720-1.x: Add xfail for cris-*-*. * gcc.c-torture/execute/20020720-1.x: Add xfail for cris-*-*.
......
ACE_Process_Descriptor::ACE_Process_Descriptor () : // { dg-error "" }
process_ (0)
{
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment