diff options
author | Jason Merrill <jason@yorick.cygnus.com> | 1998-07-24 14:02:32 +0000 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 1998-07-24 10:02:32 -0400 |
commit | d1fec18074669d313b92a54c9ea48e3c6f9f3cf3 (patch) | |
tree | 69da344414e3f77083f6b34e73e2d717311e08f3 /gcc | |
parent | e2bc7d00a61baee21520eb43f0f2fb87623af325 (diff) | |
download | gcc-d1fec18074669d313b92a54c9ea48e3c6f9f3cf3.zip gcc-d1fec18074669d313b92a54c9ea48e3c6f9f3cf3.tar.gz gcc-d1fec18074669d313b92a54c9ea48e3c6f9f3cf3.tar.bz2 |
* pt.c (coerce_template_parms): Also complain about local enums.
From-SVN: r21363
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/cp/NEWS | 16 | ||||
-rw-r--r-- | gcc/cp/pt.c | 6 |
3 files changed, 19 insertions, 5 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ebf049e..7a479dd 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,7 @@ 1998-07-24 Jason Merrill <jason@yorick.cygnus.com> + * pt.c (coerce_template_parms): Also complain about local enums. + * cp-tree.h: Add prototype for set_identifier_local_value. * decl.c (set_identifier_local_value_with_scope): Make static, prototype. diff --git a/gcc/cp/NEWS b/gcc/cp/NEWS index ebfe314..faa48d9 100644 --- a/gcc/cp/NEWS +++ b/gcc/cp/NEWS @@ -1,5 +1,9 @@ *** Changes since EGCS 1.0: +* Namespaces are fully supported. The library has not yet been converted + to use namespace std, however, and the old std-faking code is still on by + default. To turn it off, you can use -fhonor-std. + * Massive template improvements: + member template classes are supported. + template friends are supported. @@ -9,8 +13,9 @@ * operator new now throws bad_alloc where appropriate. -* Exception handling is now thread safe, and supports nested - exceptions and placement delete. +* Exception handling is now thread safe, and supports nested exceptions and + placement delete. Exception handling overhead on x86 is much lower with + GNU as 2.9. * protected virtual inheritance is now supported. @@ -20,6 +25,13 @@ * For class D derived from B which has a member 'int i', &D::i is now of type 'int B::*' instead of 'int D::*'. +* An _experimental_ new ABI for g++ can be turned on with -fnew-abi. The + current features of this are more efficient allocation of base classes + (including the empty base optimization), and more compact mangling of C++ + symbol names (which can be turned on separately with -fsquangle). This + ABI is subject to change without notice, so don't use it for anything + that you don't want to rebuild with every release of the compiler. + *** Changes in EGCS 1.0: * A public review copy of the December 1996 Draft of the ISO/ANSI C++ diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index eaf73ef..9c72431 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -2659,11 +2659,11 @@ coerce_template_parms (parms, arglist, in_decl, if (! processing_template_decl) { tree t = target_type (val); - if (TREE_CODE (t) != TYPENAME_TYPE - && IS_AGGR_TYPE (t) + if (((IS_AGGR_TYPE (t) && TREE_CODE (t) != TYPENAME_TYPE) + || TREE_CODE (t) == ENUMERAL_TYPE) && decl_function_context (TYPE_MAIN_DECL (t))) { - cp_error ("type `%T' composed from a local class is not a valid template-argument", + cp_error ("type `%T' composed from a local type is not a valid template-argument", val); return error_mark_node; } |