1 // RUN: %clang_cc1 %s -emit-llvm-only -verify
2 // expected-no-diagnostics
3 // PR5489
4 
5 template<typename E>
6 struct Bar {
7  int x_;
8 };
9 
10 static struct Bar<int> bar[1] = {
11   { 0 }
12 };
13 
14 
15 
16 namespace incomplete_type_refs {
17   struct A;
18   extern A g[];
19   void foo(A*);
f(void)20   void f(void) {
21     foo(g);    // Reference to array with unknown element type.
22   }
23 
24   struct A {   // define the element type.
25     int a,b,c;
26   };
27 
f2()28   A *f2() {
29     return &g[1];
30   }
31 
32 }
33 
34 namespace PR10395 {
35   struct T;
36   extern T x[];
f()37   T* f() { return x; }
38 }
39 
40 namespace PR10384 {
41   struct X;
42   extern X x[1];
f()43   X* f() { return x; }
44 }
45