re PR middle-end/18683 (seg fault in local allocate)

PR middle-end/18683
	* function.c (pop_function_context_from): Don't reset reg_renumber.

	* g++.dg/opt/pr18683-1.C: New test case.

From-SVN: r92452
This commit is contained in:
Roger Sayle 2004-12-21 01:37:35 +00:00 committed by Roger Sayle
parent f5b25f8cca
commit 5fdf61fee3
4 changed files with 39 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2004-12-20 Roger Sayle <roger@eyesopen.com>
PR middle-end/18683
* function.c (pop_function_context_from): Don't reset reg_renumber.
2004-12-20 Eric Botcazou <ebotcazou@libertysurf.fr> 2004-12-20 Eric Botcazou <ebotcazou@libertysurf.fr>
PR middle-end/18776 PR middle-end/18776

View File

@ -286,7 +286,6 @@ pop_function_context_from (tree context ATTRIBUTE_UNUSED)
outer_function_chain = p->outer; outer_function_chain = p->outer;
current_function_decl = p->decl; current_function_decl = p->decl;
reg_renumber = 0;
lang_hooks.function.leave_nested (p); lang_hooks.function.leave_nested (p);

View File

@ -1,3 +1,8 @@
2004-12-20 Roger Sayle <roger@eyesopen.com>
PR middle-end/18683
* g++.dg/opt/pr18683-1.C: New test case.
2004-12-20 Andrew Pinski <pinskia@physics.uc.edu> 2004-12-20 Andrew Pinski <pinskia@physics.uc.edu>
PR other/19093 PR other/19093

View File

@ -0,0 +1,29 @@
// PR middle-end/18683
// { dg-do compile }
// { dg-options "-O0" }
template<typename _CharT>
struct basic_ostream
{
basic_ostream& operator<<(int __n);
};
extern basic_ostream<char> cout;
template<int> struct linear_congruential
{
template<class CharT>
friend basic_ostream<CharT>&
operator<<(basic_ostream<CharT>& os,
const linear_congruential& lcg)
{
return os << 1;
}
};
void instantiate_all()
{
linear_congruential<0> lcf;
cout << lcf;
}