* g++.old-deja/g++.ext/array4.C: New test.
authorNathan Sidwell <nathan@codesourcery.com>
Thu, 23 Mar 2000 09:23:16 +0000 (09:23 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Thu, 23 Mar 2000 09:23:16 +0000 (09:23 +0000)
From-SVN: r32703

gcc/testsuite/ChangeLog
gcc/testsuite/g++.old-deja/g++.ext/array4.C [new file with mode: 0644]

index 228604de8edb4edbf67a139c70d8cac4d59537cf..163776a7ff2acc0a0b1163cd73b5873aeb865f86 100644 (file)
@@ -1,3 +1,7 @@
+2000-03-23  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * g++.old-deja/g++.ext/array4.C: New test.
+
 2000-03-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * gcc.dg/noreturn-1.c: Check for another bogus noreturn case.
diff --git a/gcc/testsuite/g++.old-deja/g++.ext/array4.C b/gcc/testsuite/g++.old-deja/g++.ext/array4.C
new file mode 100644 (file)
index 0000000..0d42951
--- /dev/null
@@ -0,0 +1,32 @@
+// Build don't link:
+
+// Special g++ Options:
+
+// Copyright (C) 2000 Free Software Foundation, Inc.
+// Contributed by Mark Mitchell 19 Mar 2000 <mark@codesourcery.com>
+//                Nathan Sidwell 19 Mar 2000 <nathan@codesourcery.com>
+
+// [nathan] We have a zero sized array extension, and (unfortunately) allow it
+// to be the sole member of a struct (rather than the trailing member of a
+// non-empty struct as C99 is/will allow). Such a type will have a size of
+// zero. Internally, we also use a TYPE_SIZE of zero to indicate an
+// incompletable type. We must keep the two zeroes distinct -- arrgh!
+
+struct A
+{
+  int m[0];
+};
+
+void foo ()
+{
+  A a;
+}
+
+template <class T>
+struct S
+{
+  int x[0];
+};
+
+template struct S<int>;
+