diff options
author | Andrew Pinski <pinskia@physics.uc.edu> | 2003-12-22 20:42:58 +0000 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2003-12-22 12:42:58 -0800 |
commit | 92a12fbcc49be3cc45d76d7b55ae8fe0be9da90d (patch) | |
tree | 48b8e3eb18a4828c52af140ab395186f2b5d21b9 /gcc/testsuite | |
parent | 70a841609455d827919e6384fa466a6658e5a23d (diff) | |
download | gcc-92a12fbcc49be3cc45d76d7b55ae8fe0be9da90d.zip gcc-92a12fbcc49be3cc45d76d7b55ae8fe0be9da90d.tar.gz gcc-92a12fbcc49be3cc45d76d7b55ae8fe0be9da90d.tar.bz2 |
re PR c++/5050 (template instantiation depth exceeds/maybe recursion problem)
2003-12-22 Andrew Pinski <pinskia@physics.uc.edu>
PR c++/5050
* tree.c (cp_start_inlining): Remove.
(cp_end_inlining): Remove.
* cp-lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING): Do not define.
(LANG_HOOKS_TREE_INLINING_END_INLINING): Do not define.
* cp-tree.h (cp_start_inlining): Do not declare.
(cp_end_inlining): Do not declare.
PR c++/5050
* g++.dg/template/recurse1.C: New test.
From-SVN: r74947
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/recurse1.C | 16 |
2 files changed, 20 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5da002e..640c307 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2003-12-22 Andrew Pinski <pinskia@physics.uc.edu> + + * g++.dg/template/recurse1.C: New test + 2003-12-22 Mark Mitchell <mark@codesourcery.com> PR c++/12479 diff --git a/gcc/testsuite/g++.dg/template/recurse1.C b/gcc/testsuite/g++.dg/template/recurse1.C new file mode 100644 index 0000000..4789983 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/recurse1.C @@ -0,0 +1,16 @@ +// PR c++/5050 +// Origin: georg.wild@gmx.de +// Reduced by: tbagot@bluearc.com and Nathanael C. Nerode <neroden@twcny.rr.com> +// Test for that excessive template recursion does not occur +// because of optimization. +// { dg-options "-ftemplate-depth-1 -O" } + + struct ostream { + template<class T> ostream& foo( const T & ) + { return *this; } + }; + + void foo() { + ostream os; + (os.foo(1)).foo(2); + } |