OSDN Git Service

* pt.c (coerce_template_parms): Also complain about local enums.
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 24 Jul 1998 14:02:32 +0000 (14:02 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 24 Jul 1998 14:02:32 +0000 (14:02 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@21363 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/NEWS
gcc/cp/pt.c

index ebf049e..7a479dd 100644 (file)
@@ -1,5 +1,7 @@
 1998-07-24  Jason Merrill  <jason@yorick.cygnus.com>
 
 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.
        * cp-tree.h: Add prototype for set_identifier_local_value.
        * decl.c (set_identifier_local_value_with_scope): Make static,
        prototype.
index ebfe314..faa48d9 100644 (file)
@@ -1,5 +1,9 @@
 *** Changes since EGCS 1.0:
 
 *** 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.
 * Massive template improvements:
   + member template classes are supported.
   + template friends are supported.
@@ -9,8 +13,9 @@
 
 * operator new now throws bad_alloc where appropriate.
 
 
 * 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.
 
 
 * protected virtual inheritance is now supported.
 
 * For class D derived from B which has a member 'int i', &D::i is now of
   type 'int B::*' instead of 'int D::*'.
 
 * 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++
 *** Changes in EGCS 1.0:
 
 * A public review copy of the December 1996 Draft of the ISO/ANSI C++
index eaf73ef..9c72431 100644 (file)
@@ -2659,11 +2659,11 @@ coerce_template_parms (parms, arglist, in_decl,
              if (! processing_template_decl)
                {
                  tree t = target_type (val);
              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)))
                    {
                      && 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;
                    }
                                val);
                      return error_mark_node;
                    }