diff options
| author | Douglas Gregor <dgregor@apple.com> | 2009-10-12 21:21:22 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2009-10-12 21:21:22 +0000 |
| commit | a2fe1fe208499acff9a9d1ea1a1ceed1056acf2b (patch) | |
| tree | d0076f5c934228d7f3c5df840d7787c2ac8d727c /clang/test | |
| parent | 1d116976b4d6357b2c3be099fbf5d718b1d5cea7 (diff) | |
| download | bcm5719-llvm-a2fe1fe208499acff9a9d1ea1a1ceed1056acf2b.tar.gz bcm5719-llvm-a2fe1fe208499acff9a9d1ea1a1ceed1056acf2b.zip | |
Yet another test for explicit specialization, this one involving linkage
llvm-svn: 83901
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/CXX/temp/temp.spec/temp.expl.spec/p14.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/clang/test/CXX/temp/temp.spec/temp.expl.spec/p14.cpp b/clang/test/CXX/temp/temp.spec/temp.expl.spec/p14.cpp new file mode 100644 index 00000000000..a5d5b9e3c41 --- /dev/null +++ b/clang/test/CXX/temp/temp.spec/temp.expl.spec/p14.cpp @@ -0,0 +1,42 @@ +// RUN: clang-cc -emit-llvm -o - %s | FileCheck %s + +template<class T> void f(T) { /* ... */ } +template<class T> inline void g(T) { /* ... */ } + +// CHECK: define void @_Z1gIiEvT_ +template<> void g<>(int) { /* ... */ } + +template<class T> +struct X { + void f() { } + void g(); + void h(); +}; + +template<class T> +void X<T>::g() { +} + +template<class T> +inline void X<T>::h() { +} + +// CHECK: define void @_ZN1XIiE1fEv +template<> void X<int>::f() { } + +// CHECK: define void @_ZN1XIiE1hEv +template<> void X<int>::h() { } + +// CHECK: define linkonce_odr void @_Z1fIiEvT_ +template<> inline void f<>(int) { /* ... */ } + +// CHECK: define linkonce_odr void @_ZN1XIiE1gEv +template<> inline void X<int>::g() { } + +void test(X<int> xi) { + f(17); + g(17); + xi.f(); + xi.g(); + xi.h(); +} |

