Fariborz Jahanian | 142f9e9 | 2011-02-04 00:01:24 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fapple-kext -emit-llvm -o - %s | FileCheck %s |
| 2 | |
| 3 | struct Base { |
| 4 | virtual ~Base(); |
| 5 | } ; |
| 6 | |
| 7 | struct Derived : Base { |
| 8 | void operator delete(void *) { } |
| 9 | Derived(); |
| 10 | }; |
| 11 | |
| 12 | void foo() { |
| 13 | Derived d1; // ok |
| 14 | } |
| 15 | |
John McCall | 5584d91 | 2011-09-19 18:05:26 +0000 | [diff] [blame] | 16 | // CHECK: define internal i32 @_Z1fj( |
Fariborz Jahanian | 142f9e9 | 2011-02-04 00:01:24 +0000 | [diff] [blame] | 17 | inline unsigned f(unsigned n) { return n == 0 ? 0 : n + f(n-1); } |
| 18 | |
| 19 | unsigned g(unsigned n) { return f(n); } |
| 20 | |
John McCall | 5584d91 | 2011-09-19 18:05:26 +0000 | [diff] [blame] | 21 | // rdar://problem/10133200: give explicit instantiations external linkage in kernel mode |
| 22 | // CHECK: define void @_Z3barIiEvv() |
| 23 | template <typename T> void bar() {} |
| 24 | template void bar<int>(); |
Fariborz Jahanian | 142f9e9 | 2011-02-04 00:01:24 +0000 | [diff] [blame] | 25 | |
John McCall | 5584d91 | 2011-09-19 18:05:26 +0000 | [diff] [blame] | 26 | // CHECK: define internal i32 @_Z5identIiET_S0_( |
Fariborz Jahanian | 142f9e9 | 2011-02-04 00:01:24 +0000 | [diff] [blame] | 27 | template <typename X> X ident(X x) { return x; } |
John McCall | 5584d91 | 2011-09-19 18:05:26 +0000 | [diff] [blame] | 28 | |
Fariborz Jahanian | 142f9e9 | 2011-02-04 00:01:24 +0000 | [diff] [blame] | 29 | int foo(int n) { return ident(n); } |
| 30 | |
John McCall | 5584d91 | 2011-09-19 18:05:26 +0000 | [diff] [blame] | 31 | // CHECK: define internal void @_ZN7DerivedD1Ev( |
| 32 | // CHECK: define internal void @_ZN7DerivedD0Ev( |
| 33 | // CHECK: define internal void @_ZN7DeriveddlEPv( |