diff options
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/CodeGenCXX/linkage.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/linkage.cpp b/clang/test/CodeGenCXX/linkage.cpp index 7f6188f4572..7c670293996 100644 --- a/clang/test/CodeGenCXX/linkage.cpp +++ b/clang/test/CodeGenCXX/linkage.cpp @@ -184,3 +184,28 @@ namespace test14 { } void h() { f(); } } + +namespace test15 { + // CHECK-DAG: define linkonce_odr void @_ZN6test153zedIZNS_3fooIiEEPvvE3bar_9EEvv( + template <class T> void zed() {} + template <class T> void *foo() { + class bar { + }; + return reinterpret_cast<void *>(zed<bar>); + } + void test() { foo<int>(); } +} + +namespace test16 { + // CHECK-DAG: define linkonce_odr void @_ZN6test163zedIZNS_3fooIiE3barEvE1S__10_EEvv( + template <class T> void zed() {} + template <class T> struct foo { + static void *bar(); + }; + template <class T> void *foo<T>::bar() { + class S { + }; + return reinterpret_cast<void *>(zed<S>); + } + void *test() { return foo<int>::bar(); } +} |