1142f9e99018a85105cee570133c111a52f2053ecFariborz Jahanian// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fapple-kext -emit-llvm -o - %s | FileCheck %s 2142f9e99018a85105cee570133c111a52f2053ecFariborz Jahanian 3142f9e99018a85105cee570133c111a52f2053ecFariborz Jahanianstruct Base { 4142f9e99018a85105cee570133c111a52f2053ecFariborz Jahanian virtual ~Base(); 5142f9e99018a85105cee570133c111a52f2053ecFariborz Jahanian} ; 6142f9e99018a85105cee570133c111a52f2053ecFariborz Jahanian 7142f9e99018a85105cee570133c111a52f2053ecFariborz Jahanianstruct Derived : Base { 8142f9e99018a85105cee570133c111a52f2053ecFariborz Jahanian void operator delete(void *) { } 9142f9e99018a85105cee570133c111a52f2053ecFariborz Jahanian Derived(); 10142f9e99018a85105cee570133c111a52f2053ecFariborz Jahanian}; 11142f9e99018a85105cee570133c111a52f2053ecFariborz Jahanian 12142f9e99018a85105cee570133c111a52f2053ecFariborz Jahanianvoid foo() { 13142f9e99018a85105cee570133c111a52f2053ecFariborz Jahanian Derived d1; // ok 14142f9e99018a85105cee570133c111a52f2053ecFariborz Jahanian} 15142f9e99018a85105cee570133c111a52f2053ecFariborz Jahanian 165584d91c938384b57563edbca5c2d4f1c66ff02aJohn McCall// CHECK: define internal i32 @_Z1fj( 17142f9e99018a85105cee570133c111a52f2053ecFariborz Jahanianinline unsigned f(unsigned n) { return n == 0 ? 0 : n + f(n-1); } 18142f9e99018a85105cee570133c111a52f2053ecFariborz Jahanian 19142f9e99018a85105cee570133c111a52f2053ecFariborz Jahanianunsigned g(unsigned n) { return f(n); } 20142f9e99018a85105cee570133c111a52f2053ecFariborz Jahanian 215584d91c938384b57563edbca5c2d4f1c66ff02aJohn McCall// rdar://problem/10133200: give explicit instantiations external linkage in kernel mode 225584d91c938384b57563edbca5c2d4f1c66ff02aJohn McCall// CHECK: define void @_Z3barIiEvv() 235584d91c938384b57563edbca5c2d4f1c66ff02aJohn McCalltemplate <typename T> void bar() {} 245584d91c938384b57563edbca5c2d4f1c66ff02aJohn McCalltemplate void bar<int>(); 25142f9e99018a85105cee570133c111a52f2053ecFariborz Jahanian 265584d91c938384b57563edbca5c2d4f1c66ff02aJohn McCall// CHECK: define internal i32 @_Z5identIiET_S0_( 27142f9e99018a85105cee570133c111a52f2053ecFariborz Jahaniantemplate <typename X> X ident(X x) { return x; } 285584d91c938384b57563edbca5c2d4f1c66ff02aJohn McCall 29142f9e99018a85105cee570133c111a52f2053ecFariborz Jahanianint foo(int n) { return ident(n); } 30142f9e99018a85105cee570133c111a52f2053ecFariborz Jahanian 315584d91c938384b57563edbca5c2d4f1c66ff02aJohn McCall// CHECK: define internal void @_ZN7DerivedD1Ev( 325584d91c938384b57563edbca5c2d4f1c66ff02aJohn McCall// CHECK: define internal void @_ZN7DerivedD0Ev( 335584d91c938384b57563edbca5c2d4f1c66ff02aJohn McCall// CHECK: define internal void @_ZN7DeriveddlEPv( 34