cp:
PR c++/5125
* pt.c (push_template_decl_real): Make sure DECL has
DECL_LANG_SPECIFIC.
testsuite:
* g++.dg/template/crash1.C: New test.
From-SVN: r48370
+2001-12-29 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/5125
+ * pt.c (push_template_decl_real): Make sure DECL has
+ DECL_LANG_SPECIFIC.
+
2001-12-29 Nathan Sidwell <nathan@codesourcery.com>
PR c++/335
return decl;
}
}
- else if (! DECL_TEMPLATE_INFO (decl))
+ else if (!DECL_LANG_SPECIFIC (decl) || !DECL_TEMPLATE_INFO (decl))
{
error ("template definition of non-template `%#D'", decl);
return decl;
+2001-12-29 Nathan Sidwell <nathan@codesourcery.com>
+
+ * g++.dg/template/crash1.C: New test.
+
2001-12-29 Nathan Sidwell <nathan@codesourcery.com>
* g++.dg/other/const1.C: New test.
--- /dev/null
+// { dg-do compile }
+
+// Copyright (C) 2001 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 29 Dec 2001 <nathan@nathan@codesourcery.com>
+
+// PR 5125. ICE
+
+class S
+{
+ public:
+ template <class I> void Foo(int (*f)(S& o) ); // { dg-error "candidate" "" }
+};
+
+template <class I>
+void S::Foo(int (*f)(TYPO&o) )
+{ // { dg-error "template definition of non-template|prototype" "" }
+}