diff gcc/testsuite/gcc.dg/redecl-3.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/gcc.dg/redecl-3.c	Fri Oct 27 22:46:09 2017 +0900
@@ -0,0 +1,1180 @@
+/* Test for multiple declarations and composite types.  Includes bug
+   13801.  */
+/* Origin: Joseph Myers <jsm@polyomino.org.uk> */
+/* { dg-do compile } */
+/* { dg-options "-g" } */
+
+typedef int IA[];
+typedef int A10[10];
+
+/* Test all combinations of: a variable declared at file scope (no
+   type specifiers, or extern, or static), or just inside a function
+   (with extern), redeclared in an inner scope (with extern), and
+   redeclared in an inner scope when the previous declaration is
+   hidden (with extern, and not if the original declaration was
+   static).  Test three times: incomplete variable types; pointers to
+   incomplete types; functions returning such pointers.  */
+
+IA a0;
+void
+f0 (void)
+{
+  sizeof(a0); /* { dg-error "incomplete" } */
+  {
+    extern IA a0;
+    sizeof(a0); /* { dg-error "incomplete" } */
+    {
+      int a0;
+      {
+        extern IA a0;
+        sizeof(a0); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(a0); /* { dg-error "incomplete" } */
+  }
+  sizeof(a0); /* { dg-error "incomplete" } */
+}
+extern A10 a0;
+
+IA a1;
+void
+f1 (void)
+{
+  sizeof(a1); /* { dg-error "incomplete" } */
+  {
+    extern IA a1;
+    sizeof(a1); /* { dg-error "incomplete" } */
+    {
+      int a1;
+      {
+        extern A10 a1;
+        sizeof(a1);
+      }
+    }
+    sizeof(a1); /* { dg-error "incomplete" } */
+  }
+  sizeof(a1); /* { dg-error "incomplete" } */
+}
+extern A10 a1;
+
+IA a2;
+void
+f2 (void)
+{
+  sizeof(a2); /* { dg-error "incomplete" } */
+  {
+    extern A10 a2;
+    sizeof(a2);
+    {
+      int a2;
+      {
+        extern IA a2;
+        sizeof(a2); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(a2);
+  }
+  sizeof(a2); /* { dg-error "incomplete" } */
+}
+extern A10 a2;
+
+IA a3;
+void
+f3 (void)
+{
+  sizeof(a3); /* { dg-error "incomplete" } */
+  {
+    extern A10 a3;
+    sizeof(a3);
+    {
+      int a3;
+      {
+        extern A10 a3;
+        sizeof(a3);
+      }
+    }
+    sizeof(a3);
+  }
+  sizeof(a3); /* { dg-error "incomplete" } */
+}
+extern A10 a3;
+
+A10 a4;
+void
+f4 (void)
+{
+  sizeof(a4);
+  {
+    extern IA a4;
+    sizeof(a4);
+    {
+      int a4;
+      {
+        extern IA a4;
+        sizeof(a4); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(a4);
+  }
+  sizeof(a4);
+}
+extern A10 a4;
+
+A10 a5;
+void
+f5 (void)
+{
+  sizeof(a5);
+  {
+    extern IA a5;
+    sizeof(a5);
+    {
+      int a5;
+      {
+        extern A10 a5;
+        sizeof(a5);
+      }
+    }
+    sizeof(a5);
+  }
+  sizeof(a5);
+}
+extern A10 a5;
+
+A10 a6;
+void
+f6 (void)
+{
+  sizeof(a6);
+  {
+    extern A10 a6;
+    sizeof(a6);
+    {
+      int a6;
+      {
+        extern IA a6;
+        sizeof(a6); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(a6);
+  }
+  sizeof(a6);
+}
+extern A10 a6;
+
+A10 a7;
+void
+f7 (void)
+{
+  sizeof(a7);
+  {
+    extern A10 a7;
+    sizeof(a7);
+    {
+      int a7;
+      {
+        extern A10 a7;
+        sizeof(a7);
+      }
+    }
+    sizeof(a7);
+  }
+  sizeof(a7);
+}
+extern A10 a7;
+
+extern IA a8;
+void
+f8 (void)
+{
+  sizeof(a8); /* { dg-error "incomplete" } */
+  {
+    extern IA a8;
+    sizeof(a8); /* { dg-error "incomplete" } */
+    {
+      int a8;
+      {
+        extern IA a8;
+        sizeof(a8); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(a8); /* { dg-error "incomplete" } */
+  }
+  sizeof(a8); /* { dg-error "incomplete" } */
+}
+extern A10 a8;
+
+extern IA a9;
+void
+f9 (void)
+{
+  sizeof(a9); /* { dg-error "incomplete" } */
+  {
+    extern IA a9;
+    sizeof(a9); /* { dg-error "incomplete" } */
+    {
+      int a9;
+      {
+        extern A10 a9;
+        sizeof(a9);
+      }
+    }
+    sizeof(a9); /* { dg-error "incomplete" } */
+  }
+  sizeof(a9); /* { dg-error "incomplete" } */
+}
+extern A10 a9;
+
+extern IA a10;
+void
+f10 (void)
+{
+  sizeof(a10); /* { dg-error "incomplete" } */
+  {
+    extern A10 a10;
+    sizeof(a10);
+    {
+      int a10;
+      {
+        extern IA a10;
+        sizeof(a10); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(a10);
+  }
+  sizeof(a10); /* { dg-error "incomplete" } */
+}
+extern A10 a10;
+
+extern IA a11;
+void
+f11 (void)
+{
+  sizeof(a11); /* { dg-error "incomplete" } */
+  {
+    extern A10 a11;
+    sizeof(a11);
+    {
+      int a11;
+      {
+        extern A10 a11;
+        sizeof(a11);
+      }
+    }
+    sizeof(a11);
+  }
+  sizeof(a11); /* { dg-error "incomplete" } */
+}
+extern A10 a11;
+
+extern A10 a12;
+void
+f12 (void)
+{
+  sizeof(a12);
+  {
+    extern IA a12;
+    sizeof(a12);
+    {
+      int a12;
+      {
+        extern IA a12;
+        sizeof(a12); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(a12);
+  }
+  sizeof(a12);
+}
+extern A10 a12;
+
+extern A10 a13;
+void
+f13 (void)
+{
+  sizeof(a13);
+  {
+    extern IA a13;
+    sizeof(a13);
+    {
+      int a13;
+      {
+        extern A10 a13;
+        sizeof(a13);
+      }
+    }
+    sizeof(a13);
+  }
+  sizeof(a13);
+}
+extern A10 a13;
+
+extern A10 a14;
+void
+f14 (void)
+{
+  sizeof(a14);
+  {
+    extern A10 a14;
+    sizeof(a14);
+    {
+      int a14;
+      {
+        extern IA a14;
+        sizeof(a14); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(a14);
+  }
+  sizeof(a14);
+}
+extern A10 a14;
+
+extern A10 a15;
+void
+f15 (void)
+{
+  sizeof(a15);
+  {
+    extern A10 a15;
+    sizeof(a15);
+    {
+      int a15;
+      {
+        extern A10 a15;
+        sizeof(a15);
+      }
+    }
+    sizeof(a15);
+  }
+  sizeof(a15);
+}
+extern A10 a15;
+
+static IA a16;
+void
+f16 (void)
+{
+  sizeof(a16); /* { dg-error "incomplete" } */
+  {
+    extern IA a16;
+    sizeof(a16); /* { dg-error "incomplete" } */
+  }
+  sizeof(a16); /* { dg-error "incomplete" } */
+}
+extern A10 a16;
+
+static IA a17;
+void
+f17 (void)
+{
+  sizeof(a17); /* { dg-error "incomplete" } */
+  {
+    extern A10 a17;
+    sizeof(a17);
+  }
+  sizeof(a17); /* { dg-error "incomplete" } */
+}
+extern A10 a17;
+
+static A10 a18;
+void
+f18 (void)
+{
+  sizeof(a18);
+  {
+    extern IA a18;
+    sizeof(a18);
+  }
+  sizeof(a18);
+}
+extern A10 a18;
+
+static A10 a19;
+void
+f19 (void)
+{
+  sizeof(a19);
+  {
+    extern A10 a19;
+    sizeof(a19);
+  }
+  sizeof(a19);
+}
+extern A10 a19;
+
+IA *b0;
+void
+g0 (void)
+{
+  sizeof(*b0); /* { dg-error "incomplete" } */
+  {
+    extern IA *b0;
+    sizeof(*b0); /* { dg-error "incomplete" } */
+    {
+      int b0;
+      {
+        extern IA *b0;
+        sizeof(*b0); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(*b0); /* { dg-error "incomplete" } */
+  }
+  sizeof(*b0); /* { dg-error "incomplete" } */
+}
+extern A10 *b0;
+
+IA *b1;
+void
+g1 (void)
+{
+  sizeof(*b1); /* { dg-error "incomplete" } */
+  {
+    extern IA *b1;
+    sizeof(*b1); /* { dg-error "incomplete" } */
+    {
+      int b1;
+      {
+        extern A10 *b1;
+        sizeof(*b1);
+      }
+    }
+    sizeof(*b1); /* { dg-error "incomplete" } */
+  }
+  sizeof(*b1); /* { dg-error "incomplete" } */
+}
+extern A10 *b1;
+
+IA *b2;
+void
+g2 (void)
+{
+  sizeof(*b2); /* { dg-error "incomplete" } */
+  {
+    extern A10 *b2;
+    sizeof(*b2);
+    {
+      int b2;
+      {
+        extern IA *b2;
+        sizeof(*b2); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(*b2);
+  }
+  sizeof(*b2); /* { dg-error "incomplete" } */
+}
+extern A10 *b2;
+
+IA *b3;
+void
+g3 (void)
+{
+  sizeof(*b3); /* { dg-error "incomplete" } */
+  {
+    extern A10 *b3;
+    sizeof(*b3);
+    {
+      int b3;
+      {
+        extern A10 *b3;
+        sizeof(*b3);
+      }
+    }
+    sizeof(*b3);
+  }
+  sizeof(*b3); /* { dg-error "incomplete" } */
+}
+extern A10 *b3;
+
+A10 *b4;
+void
+g4 (void)
+{
+  sizeof(*b4);
+  {
+    extern IA *b4;
+    sizeof(*b4);
+    {
+      int b4;
+      {
+        extern IA *b4;
+        sizeof(*b4); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(*b4);
+  }
+  sizeof(*b4);
+}
+extern A10 *b4;
+
+A10 *b5;
+void
+g5 (void)
+{
+  sizeof(*b5);
+  {
+    extern IA *b5;
+    sizeof(*b5);
+    {
+      int b5;
+      {
+        extern A10 *b5;
+        sizeof(*b5);
+      }
+    }
+    sizeof(*b5);
+  }
+  sizeof(*b5);
+}
+extern A10 *b5;
+
+A10 *b6;
+void
+g6 (void)
+{
+  sizeof(*b6);
+  {
+    extern A10 *b6;
+    sizeof(*b6);
+    {
+      int b6;
+      {
+        extern IA *b6;
+        sizeof(*b6); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(*b6);
+  }
+  sizeof(*b6);
+}
+extern A10 *b6;
+
+A10 *b7;
+void
+g7 (void)
+{
+  sizeof(*b7);
+  {
+    extern A10 *b7;
+    sizeof(*b7);
+    {
+      int b7;
+      {
+        extern A10 *b7;
+        sizeof(*b7);
+      }
+    }
+    sizeof(*b7);
+  }
+  sizeof(*b7);
+}
+extern A10 *b7;
+
+extern IA *b8;
+void
+g8 (void)
+{
+  sizeof(*b8); /* { dg-error "incomplete" } */
+  {
+    extern IA *b8;
+    sizeof(*b8); /* { dg-error "incomplete" } */
+    {
+      int b8;
+      {
+        extern IA *b8;
+        sizeof(*b8); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(*b8); /* { dg-error "incomplete" } */
+  }
+  sizeof(*b8); /* { dg-error "incomplete" } */
+}
+extern A10 *b8;
+
+extern IA *b9;
+void
+g9 (void)
+{
+  sizeof(*b9); /* { dg-error "incomplete" } */
+  {
+    extern IA *b9;
+    sizeof(*b9); /* { dg-error "incomplete" } */
+    {
+      int b9;
+      {
+        extern A10 *b9;
+        sizeof(*b9);
+      }
+    }
+    sizeof(*b9); /* { dg-error "incomplete" } */
+  }
+  sizeof(*b9); /* { dg-error "incomplete" } */
+}
+extern A10 *b9;
+
+extern IA *b10;
+void
+g10 (void)
+{
+  sizeof(*b10); /* { dg-error "incomplete" } */
+  {
+    extern A10 *b10;
+    sizeof(*b10);
+    {
+      int b10;
+      {
+        extern IA *b10;
+        sizeof(*b10); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(*b10);
+  }
+  sizeof(*b10); /* { dg-error "incomplete" } */
+}
+extern A10 *b10;
+
+extern IA *b11;
+void
+g11 (void)
+{
+  sizeof(*b11); /* { dg-error "incomplete" } */
+  {
+    extern A10 *b11;
+    sizeof(*b11);
+    {
+      int b11;
+      {
+        extern A10 *b11;
+        sizeof(*b11);
+      }
+    }
+    sizeof(*b11);
+  }
+  sizeof(*b11); /* { dg-error "incomplete" } */
+}
+extern A10 *b11;
+
+extern A10 *b12;
+void
+g12 (void)
+{
+  sizeof(*b12);
+  {
+    extern IA *b12;
+    sizeof(*b12);
+    {
+      int b12;
+      {
+        extern IA *b12;
+        sizeof(*b12); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(*b12);
+  }
+  sizeof(*b12);
+}
+extern A10 *b12;
+
+extern A10 *b13;
+void
+g13 (void)
+{
+  sizeof(*b13);
+  {
+    extern IA *b13;
+    sizeof(*b13);
+    {
+      int b13;
+      {
+        extern A10 *b13;
+        sizeof(*b13);
+      }
+    }
+    sizeof(*b13);
+  }
+  sizeof(*b13);
+}
+extern A10 *b13;
+
+extern A10 *b14;
+void
+g14 (void)
+{
+  sizeof(*b14);
+  {
+    extern A10 *b14;
+    sizeof(*b14);
+    {
+      int b14;
+      {
+        extern IA *b14;
+        sizeof(*b14); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(*b14);
+  }
+  sizeof(*b14);
+}
+extern A10 *b14;
+
+extern A10 *b15;
+void
+g15 (void)
+{
+  sizeof(*b15);
+  {
+    extern A10 *b15;
+    sizeof(*b15);
+    {
+      int b15;
+      {
+        extern A10 *b15;
+        sizeof(*b15);
+      }
+    }
+    sizeof(*b15);
+  }
+  sizeof(*b15);
+}
+extern A10 *b15;
+
+static IA *b16;
+void
+g16 (void)
+{
+  sizeof(*b16); /* { dg-error "incomplete" } */
+  {
+    extern IA *b16;
+    sizeof(*b16); /* { dg-error "incomplete" } */
+  }
+  sizeof(*b16); /* { dg-error "incomplete" } */
+}
+extern A10 *b16;
+
+static IA *b17;
+void
+g17 (void)
+{
+  sizeof(*b17); /* { dg-error "incomplete" } */
+  {
+    extern A10 *b17;
+    sizeof(*b17);
+  }
+  sizeof(*b17); /* { dg-error "incomplete" } */
+}
+extern A10 *b17;
+
+static A10 *b18;
+void
+g18 (void)
+{
+  sizeof(*b18);
+  {
+    extern IA *b18;
+    sizeof(*b18);
+  }
+  sizeof(*b18);
+}
+extern A10 *b18;
+
+static A10 *b19;
+void
+g19 (void)
+{
+  sizeof(*b19);
+  {
+    extern A10 *b19;
+    sizeof(*b19);
+  }
+  sizeof(*b19);
+}
+extern A10 *b19;
+
+IA *c0 (void);
+void
+h0 (void)
+{
+  sizeof(*c0()); /* { dg-error "incomplete" } */
+  {
+    extern IA *c0 (void);
+    sizeof(*c0()); /* { dg-error "incomplete" } */
+    {
+      int c0;
+      {
+        extern IA *c0 (void);
+        sizeof(*c0()); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(*c0()); /* { dg-error "incomplete" } */
+  }
+  sizeof(*c0()); /* { dg-error "incomplete" } */
+}
+A10 *c0 (void) { return 0; }
+
+IA *c1 (void);
+void
+h1 (void)
+{
+  sizeof(*c1()); /* { dg-error "incomplete" } */
+  {
+    extern IA *c1 (void);
+    sizeof(*c1()); /* { dg-error "incomplete" } */
+    {
+      int c1;
+      {
+        extern A10 *c1 (void);
+        sizeof(*c1());
+      }
+    }
+    sizeof(*c1()); /* { dg-error "incomplete" } */
+  }
+  sizeof(*c1()); /* { dg-error "incomplete" } */
+}
+A10 *c1 (void) { return 0; }
+
+IA *c2 (void);
+void
+h2 (void)
+{
+  sizeof(*c2()); /* { dg-error "incomplete" } */
+  {
+    extern A10 *c2 (void);
+    sizeof(*c2());
+    {
+      int c2;
+      {
+        extern IA *c2 (void);
+        sizeof(*c2()); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(*c2());
+  }
+  sizeof(*c2()); /* { dg-error "incomplete" } */
+}
+A10 *c2 (void) { return 0; }
+
+IA *c3 (void);
+void
+h3 (void)
+{
+  sizeof(*c3()); /* { dg-error "incomplete" } */
+  {
+    extern A10 *c3 (void);
+    sizeof(*c3());
+    {
+      int c3;
+      {
+        extern A10 *c3 (void);
+        sizeof(*c3());
+      }
+    }
+    sizeof(*c3());
+  }
+  sizeof(*c3()); /* { dg-error "incomplete" } */
+}
+A10 *c3 (void) { return 0; }
+
+A10 *c4 (void);
+void
+h4 (void)
+{
+  sizeof(*c4());
+  {
+    extern IA *c4 (void);
+    sizeof(*c4());
+    {
+      int c4;
+      {
+        extern IA *c4 (void);
+        sizeof(*c4()); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(*c4());
+  }
+  sizeof(*c4());
+}
+A10 *c4 (void) { return 0; }
+
+A10 *c5 (void);
+void
+h5 (void)
+{
+  sizeof(*c5());
+  {
+    extern IA *c5 (void);
+    sizeof(*c5());
+    {
+      int c5;
+      {
+        extern A10 *c5 (void);
+        sizeof(*c5());
+      }
+    }
+    sizeof(*c5());
+  }
+  sizeof(*c5());
+}
+A10 *c5 (void) { return 0; }
+
+A10 *c6 (void);
+void
+h6 (void)
+{
+  sizeof(*c6());
+  {
+    extern A10 *c6 (void);
+    sizeof(*c6());
+    {
+      int c6;
+      {
+        extern IA *c6 (void);
+        sizeof(*c6()); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(*c6());
+  }
+  sizeof(*c6());
+}
+A10 *c6 (void) { return 0; }
+
+A10 *c7 (void);
+void
+h7 (void)
+{
+  sizeof(*c7());
+  {
+    extern A10 *c7 (void);
+    sizeof(*c7());
+    {
+      int c7;
+      {
+        extern A10 *c7 (void);
+        sizeof(*c7());
+      }
+    }
+    sizeof(*c7());
+  }
+  sizeof(*c7());
+}
+A10 *c7 (void) { return 0; }
+
+extern IA *c8 (void);
+void
+h8 (void)
+{
+  sizeof(*c8()); /* { dg-error "incomplete" } */
+  {
+    extern IA *c8 (void);
+    sizeof(*c8()); /* { dg-error "incomplete" } */
+    {
+      int c8;
+      {
+        extern IA *c8 (void);
+        sizeof(*c8()); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(*c8()); /* { dg-error "incomplete" } */
+  }
+  sizeof(*c8()); /* { dg-error "incomplete" } */
+}
+extern A10 *c8 (void) { return 0; }
+
+extern IA *c9 (void);
+void
+h9 (void)
+{
+  sizeof(*c9()); /* { dg-error "incomplete" } */
+  {
+    extern IA *c9 (void);
+    sizeof(*c9()); /* { dg-error "incomplete" } */
+    {
+      int c9;
+      {
+        extern A10 *c9 (void);
+        sizeof(*c9());
+      }
+    }
+    sizeof(*c9()); /* { dg-error "incomplete" } */
+  }
+  sizeof(*c9()); /* { dg-error "incomplete" } */
+}
+extern A10 *c9 (void) { return 0; }
+
+extern IA *c10 (void);
+void
+h10 (void)
+{
+  sizeof(*c10()); /* { dg-error "incomplete" } */
+  {
+    extern A10 *c10 (void);
+    sizeof(*c10());
+    {
+      int c10;
+      {
+        extern IA *c10 (void);
+        sizeof(*c10()); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(*c10());
+  }
+  sizeof(*c10()); /* { dg-error "incomplete" } */
+}
+extern A10 *c10 (void) { return 0; }
+
+extern IA *c11 (void);
+void
+h11 (void)
+{
+  sizeof(*c11()); /* { dg-error "incomplete" } */
+  {
+    extern A10 *c11 (void);
+    sizeof(*c11());
+    {
+      int c11;
+      {
+        extern A10 *c11 (void);
+        sizeof(*c11());
+      }
+    }
+    sizeof(*c11());
+  }
+  sizeof(*c11()); /* { dg-error "incomplete" } */
+}
+extern A10 *c11 (void) { return 0; }
+
+extern A10 *c12 (void);
+void
+h12 (void)
+{
+  sizeof(*c12());
+  {
+    extern IA *c12 (void);
+    sizeof(*c12());
+    {
+      int c12;
+      {
+        extern IA *c12 (void);
+        sizeof(*c12()); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(*c12());
+  }
+  sizeof(*c12());
+}
+extern A10 *c12 (void) { return 0; }
+
+extern A10 *c13 (void);
+void
+h13 (void)
+{
+  sizeof(*c13());
+  {
+    extern IA *c13 (void);
+    sizeof(*c13());
+    {
+      int c13;
+      {
+        extern A10 *c13 (void);
+        sizeof(*c13());
+      }
+    }
+    sizeof(*c13());
+  }
+  sizeof(*c13());
+}
+extern A10 *c13 (void) { return 0; }
+
+extern A10 *c14 (void);
+void
+h14 (void)
+{
+  sizeof(*c14());
+  {
+    extern A10 *c14 (void);
+    sizeof(*c14());
+    {
+      int c14;
+      {
+        extern IA *c14 (void);
+        sizeof(*c14()); /* { dg-error "incomplete" } */
+      }
+    }
+    sizeof(*c14());
+  }
+  sizeof(*c14());
+}
+extern A10 *c14 (void) { return 0; }
+
+extern A10 *c15 (void);
+void
+h15 (void)
+{
+  sizeof(*c15());
+  {
+    extern A10 *c15 (void);
+    sizeof(*c15());
+    {
+      int c15;
+      {
+        extern A10 *c15 (void);
+        sizeof(*c15());
+      }
+    }
+    sizeof(*c15());
+  }
+  sizeof(*c15());
+}
+extern A10 *c15 (void) { return 0; }
+
+static IA *c16 (void);
+void
+h16 (void)
+{
+  sizeof(*c16()); /* { dg-error "incomplete" } */
+  {
+    extern IA *c16 (void);
+    sizeof(*c16()); /* { dg-error "incomplete" } */
+  }
+  sizeof(*c16()); /* { dg-error "incomplete" } */
+}
+static A10 *c16 (void) { return 0; }
+
+static IA *c17 (void);
+void
+h17 (void)
+{
+  sizeof(*c17()); /* { dg-error "incomplete" } */
+  {
+    extern A10 *c17 (void);
+    sizeof(*c17());
+  }
+  sizeof(*c17()); /* { dg-error "incomplete" } */
+}
+static A10 *c17 (void) { return 0; }
+
+static A10 *c18 (void);
+void
+h18 (void)
+{
+  sizeof(*c18());
+  {
+    extern IA *c18 (void);
+    sizeof(*c18());
+  }
+  sizeof(*c18());
+}
+static A10 *c18 (void) { return 0; }
+
+static A10 *c19 (void);
+void
+h19 (void)
+{
+  sizeof(*c19());
+  {
+    extern A10 *c19 (void);
+    sizeof(*c19());
+  }
+  sizeof(*c19());
+}
+static A10 *c19 (void) { return 0; }