1*67e74705SXin Li // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fapple-kext -emit-llvm -o - %s | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Li struct Base { 4*67e74705SXin Li virtual ~Base(); 5*67e74705SXin Li } ; 6*67e74705SXin Li 7*67e74705SXin Li struct Derived : Base { operator deleteDerived8*67e74705SXin Li void operator delete(void *) { } 9*67e74705SXin Li Derived(); 10*67e74705SXin Li }; 11*67e74705SXin Li foo()12*67e74705SXin Livoid foo() { 13*67e74705SXin Li Derived d1; // ok 14*67e74705SXin Li } 15*67e74705SXin Li 16*67e74705SXin Li // CHECK-LABEL: define internal i32 @_Z1fj( f(unsigned n)17*67e74705SXin Liinline unsigned f(unsigned n) { return n == 0 ? 0 : n + f(n-1); } 18*67e74705SXin Li g(unsigned n)19*67e74705SXin Liunsigned g(unsigned n) { return f(n); } 20*67e74705SXin Li 21*67e74705SXin Li // rdar://problem/10133200: give explicit instantiations external linkage in kernel mode 22*67e74705SXin Li // CHECK-LABEL: define void @_Z3barIiEvv() bar()23*67e74705SXin Litemplate <typename T> void bar() {} 24*67e74705SXin Li template void bar<int>(); 25*67e74705SXin Li 26*67e74705SXin Li // CHECK-LABEL: define internal i32 @_Z5identIiET_S0_( ident(X x)27*67e74705SXin Litemplate <typename X> X ident(X x) { return x; } 28*67e74705SXin Li foo(int n)29*67e74705SXin Liint foo(int n) { return ident(n); } 30*67e74705SXin Li 31*67e74705SXin Li // CHECK-LABEL: define internal void @_ZN7DerivedD1Ev( 32*67e74705SXin Li // CHECK-LABEL: define internal void @_ZN7DerivedD0Ev( 33*67e74705SXin Li // CHECK-LABEL: define internal void @_ZN7DeriveddlEPv( 34