OSDN Git Service

* pt.c (tsubst): Allow an array of explicit size zero.
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 24 Feb 1999 11:46:56 +0000 (11:46 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 24 Feb 1999 11:46:56 +0000 (11:46 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25400 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 8aacd3f..348739f 100644 (file)
@@ -1,3 +1,7 @@
+1999-02-24  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * pt.c (tsubst): Allow an array of explicit size zero.
+
 1999-02-23  Jason Merrill  <jason@yorick.cygnus.com>
 
        * errfn.c: Change varargs code to look like toplev.c.
index 905bdf6..b13a8c8 100644 (file)
@@ -6017,9 +6017,9 @@ tsubst (t, args, complain, in_decl)
        return t;
 
       {
-       tree max = TREE_OPERAND (TYPE_MAX_VALUE (t), 0);
+       tree max, omax = TREE_OPERAND (TYPE_MAX_VALUE (t), 0);
 
-       max = tsubst_expr (max, args, complain, in_decl);
+       max = tsubst_expr (omax, args, complain, in_decl);
        if (max == error_mark_node)
          return error_mark_node;
 
@@ -6032,7 +6032,13 @@ tsubst (t, args, complain, in_decl)
            return itype;
          }
 
-       if (integer_zerop (max) || INT_CST_LT (max, integer_zero_node))
+       if (integer_zerop (omax))
+         {
+           /* Still allow an explicit array of size zero.  */
+           if (pedantic)
+             pedwarn ("creating array with size zero");
+         }
+       else if (integer_zerop (max) || INT_CST_LT (max, integer_zero_node))
          {
            /* [temp.deduct]