OSDN Git Service

* c-typeck.c (set_init_index): If first is equal to last, assume as
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 31 Jan 2001 17:38:11 +0000 (17:38 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 31 Jan 2001 17:38:11 +0000 (17:38 +0000)
if it was not a range at all.

* gcc.dg/gnu99-init-1.c: Add test for [0 ... 0] range.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39380 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/c-typeck.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/gnu99-init-1.c

index cf31ea1..d82c6c9 100644 (file)
@@ -1,3 +1,8 @@
+2001-01-31  Jakub Jelinek  <jakub@redhat.com>
+
+       * c-typeck.c (set_init_index): If first is equal to last, assume as
+       if it was not a range at all.
+
 2001-01-31  Alexandre Oliva  <aoliva@redhat.com>
 
        * config/fp-bit.c: Include tm.h.
index 3dc52e4..3b8f9b0 100644 (file)
@@ -5688,21 +5688,27 @@ set_init_index (first, last)
     {
       constructor_index = convert (bitsizetype, first);
 
-      if (last != 0 && tree_int_cst_lt (last, first))
+      if (last)
        {
-         error_init ("empty index range in initializer");
-         last = 0;
-       }
-      else if (last)
-       {
-         last = convert (bitsizetype, last);
-         if (constructor_max_index != 0
-             && tree_int_cst_lt (constructor_max_index, last))
+         if (tree_int_cst_equal (first, last))
+           last = 0;
+         else if (tree_int_cst_lt (last, first))
            {
-             error_init ("array index range in initializer exceeds array bounds");
+             error_init ("empty index range in initializer");
              last = 0;
            }
+         else
+           {
+             last = convert (bitsizetype, last);
+             if (constructor_max_index != 0
+                 && tree_int_cst_lt (constructor_max_index, last))
+               {
+                 error_init ("array index range in initializer exceeds array bounds");
+                 last = 0;
+               }
+           }
        }
+
       designator_depth++;
       designator_errorneous = 0;
       if (constructor_range_stack || last)
index 7d20abc..14117ae 100644 (file)
@@ -1,3 +1,7 @@
+2001-01-31  Jakub Jelinek  <jakub@redhat.com>
+
+       * gcc.dg/gnu99-init-1.c: Add test for [0 ... 0] range.
+
 2001-01-31  Jeffrey Oldham  <oldham@codesourcery.com>
 
        * gcc.dg/c99-float-1.c: Back out "XFAIL FLT_EVAL_METHOD and
index 9c22c90..009c851 100644 (file)
@@ -24,6 +24,7 @@ struct M o[] = { [0 ... 5].O = { [1 ... 2].K[0 ... 1] = 4 },
 struct M p[] = { [0 ... 5].O[1 ... 2].K = { [0 ... 1] = 4 },
                 [5].O[2].K[2] = 5, 6, 7 };
 int q[3][3] = { [0 ... 1] = { [1 ... 2] = 23 }, [1][2] = 24 };
+int r[1] = { [0 ... 1 - 1] = 27 };
 
 int main (void)
 {
@@ -73,5 +74,7 @@ int main (void)
     abort ();
   if (q[2][0] || q[2][1] || q[2][2])
     abort ();
+  if (r[0] != 27)
+    abort ();
   exit (0);
 }