1// PR c++/21764
2// Test for namespace visibility attribute semantics.
3
4// { dg-require-visibility "" }
5// { dg-final { scan-hidden "_ZN3foo1fEv" } }
6// { dg-final { scan-hidden "_ZN3foo1gEv" } }
7// { dg-final { scan-hidden "_ZN3foo1A1mEv" } }
8// { dg-final { scan-hidden "_ZN3foo1tIiEEvv" } }
9// { dg-final { scan-not-hidden "_ZN3foo1hEv" } }
10
11namespace foo __attribute ((visibility ("hidden")))
12{
13  int f() { }
14  void g();
15  template <typename T> void t() { }
16  class A
17  {
18    void m ();
19  };
20}
21
22namespace foo
23{
24  void h() {}
25}
26
27void foo::g() { t<int> (); }
28
29void foo::A::m() { }
30
31