44 lines · plain
1// RUN: %clang_cc1 -std=c++20 %s -triple %itanium_abi_triple -emit-llvm -o - | FileCheck %s2 3export module FOO;4 5class One;6class Two;7 8export template<typename T> struct TPL9{10void M (T *);11template<typename U> void N (T *, U*);12};13 14template<typename T>15void TPL<T>::M (T *) {}16 17template<typename T> template<typename U> void TPL<T>::N (T *, U*) {}18 19// CHECK-DAG: void @_ZNW3FOO3TPLIS_3OneE1MEPS1_(20template void TPL<One>::M (One *);21// CHECK-DAG: void @_ZNW3FOO3TPLIS_3OneE1NIS_3TwoEEvPS1_PT_(22template void TPL<One>::N<Two> (One *, Two *);23 24namespace NMS {25class One;26class Two;27 28export template<typename T> struct TPL29{30void M (T *);31template<typename U> void N (T *, U*);32};33 34template<typename T>35void TPL<T>::M (T *) {}36 37template<typename T> template<typename U> void TPL<T>::N (T *, U*) {}38 39// CHECK-DAG: void @_ZN3NMSW3FOO3TPLINS_S0_3OneEE1MEPS2_(40template void TPL<One>::M (One *);41// CHECK-DAG: void @_ZN3NMSW3FOO3TPLINS_S0_3OneEE1NINS_S0_3TwoEEEvPS2_PT_42template void TPL<One>::N<Two> (One *, Two *);43}44