1// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
2// CHECK: ; ModuleID
3
4struct A {
5    inline void f();
6};
7
8// CHECK-NOT: define void @_ZN1A1fEv
9void A::f() { }
10
11template<typename> struct B { };
12
13template<> struct B<char> {
14  inline void f();
15};
16
17// CHECK-NOT: _ZN1BIcE1fEv
18void B<char>::f() { }
19
20// We need a final CHECK line here.
21
22// CHECK: define void @_Z1fv
23void f() { }
24
25// <rdar://problem/8740363>
26inline void f1(int);
27
28// CHECK: define linkonce_odr void @_Z2f1i
29void f1(int) { }
30
31void test_f1() { f1(17); }
32
33// PR8789
34namespace test1 {
35  template <typename T> class ClassTemplate {
36  private:
37    friend void T::func();
38    void g() {}
39  };
40
41  // CHECK: define linkonce_odr void @_ZN5test11C4funcEv(
42
43  class C {
44  public:
45    void func() {
46      ClassTemplate<C> ct;
47      ct.g();
48    }
49  };
50
51  void f() {
52    C c;
53    c.func();
54  }
55}
56