Commit 2aa3110a by Mark Mitchell Committed by Mark Mitchell

decl.c (start_function): Set x_dont_save_pending_sizes rather than calling get_pending_sizes.

	* decl.c (start_function): Set x_dont_save_pending_sizes rather
	than calling get_pending_sizes.
	* init.c (build_new): Don't save and restore
	immediate_size_expand; instead, assert that it has the expected
	value already.

From-SVN: r29669
parent d43163b7
1999-09-26 Mark Mitchell <mark@codesourcery.com>
* decl.c (start_function): Set x_dont_save_pending_sizes rather
than calling get_pending_sizes.
* init.c (build_new): Don't save and restore
immediate_size_expand; instead, assert that it has the expected
value already.
1999-09-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 1999-09-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* lex.c (compiler_error): Add missing call to va_end(). * lex.c (compiler_error): Add missing call to va_end().
......
...@@ -12915,7 +12915,7 @@ start_function (declspecs, declarator, attrs, flags) ...@@ -12915,7 +12915,7 @@ start_function (declspecs, declarator, attrs, flags)
We haven't necessarily assigned RTL to all variables yet, so it's We haven't necessarily assigned RTL to all variables yet, so it's
not safe to try to expand expressions involving them. */ not safe to try to expand expressions involving them. */
immediate_size_expand = 0; immediate_size_expand = 0;
get_pending_sizes (); current_function->x_dont_save_pending_sizes_p = 1;
/* Let the user know we're compiling this function. */ /* Let the user know we're compiling this function. */
if (processing_template_decl || !building_stmt_tree ()) if (processing_template_decl || !building_stmt_tree ())
......
...@@ -1909,14 +1909,10 @@ build_new (placement, decl, init, use_global_new) ...@@ -1909,14 +1909,10 @@ build_new (placement, decl, init, use_global_new)
{ {
tree absdcl = TREE_VALUE (decl); tree absdcl = TREE_VALUE (decl);
tree last_absdcl = NULL_TREE; tree last_absdcl = NULL_TREE;
int old_immediate_size_expand = 0;
if (current_function_decl if (current_function_decl
&& DECL_CONSTRUCTOR_P (current_function_decl)) && DECL_CONSTRUCTOR_P (current_function_decl))
{ my_friendly_assert (immediate_size_expand == 0, 19990926);
old_immediate_size_expand = immediate_size_expand;
immediate_size_expand = 0;
}
nelts = integer_one_node; nelts = integer_one_node;
...@@ -1980,17 +1976,7 @@ build_new (placement, decl, init, use_global_new) ...@@ -1980,17 +1976,7 @@ build_new (placement, decl, init, use_global_new)
type = groktypename (decl); type = groktypename (decl);
if (! type || type == error_mark_node) if (! type || type == error_mark_node)
{ return error_mark_node;
immediate_size_expand = old_immediate_size_expand;
return error_mark_node;
}
if (current_function_decl
&& DECL_CONSTRUCTOR_P (current_function_decl))
{
pending_sizes = get_pending_sizes ();
immediate_size_expand = old_immediate_size_expand;
}
} }
else if (TREE_CODE (decl) == IDENTIFIER_NODE) else if (TREE_CODE (decl) == IDENTIFIER_NODE)
{ {
......
// Build don't link:
// Origin: Alfred Minarik <a8601248@unet.univie.ac.at>
// Special g++ Options:
template<typename T>
struct S
{
void f() {}
};
int main()
{
S<int> s;
int len = 50;
char array[len];
s.f();
}
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