diff options
author | Roger Sayle <roger@eyesopen.com> | 2004-12-21 01:37:35 +0000 |
---|---|---|
committer | Roger Sayle <sayle@gcc.gnu.org> | 2004-12-21 01:37:35 +0000 |
commit | 5fdf61fee32a4b2b2dd2e2884a43c730dd5f90d1 (patch) | |
tree | 337ed6016df1dc1476a762f7d246d255cfed9a89 /gcc | |
parent | f5b25f8cca4732d0c64d20ea20792b2941ac7bb3 (diff) | |
download | gcc-5fdf61fee32a4b2b2dd2e2884a43c730dd5f90d1.zip gcc-5fdf61fee32a4b2b2dd2e2884a43c730dd5f90d1.tar.gz gcc-5fdf61fee32a4b2b2dd2e2884a43c730dd5f90d1.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/function.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/opt/pr18683-1.C | 29 |
4 files changed, 39 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d5e223c..5026be9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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> PR middle-end/18776 diff --git a/gcc/function.c b/gcc/function.c index 9251071..a7dc223 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -286,7 +286,6 @@ pop_function_context_from (tree context ATTRIBUTE_UNUSED) outer_function_chain = p->outer; current_function_decl = p->decl; - reg_renumber = 0; lang_hooks.function.leave_nested (p); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d05d4ef..138785b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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> PR other/19093 diff --git a/gcc/testsuite/g++.dg/opt/pr18683-1.C b/gcc/testsuite/g++.dg/opt/pr18683-1.C new file mode 100644 index 0000000..847a4d3 --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/pr18683-1.C @@ -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; +} + |