diff options
Diffstat (limited to 'clang/test/CodeGenCXX/mangle.cpp')
| -rw-r--r-- | clang/test/CodeGenCXX/mangle.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/clang/test/CodeGenCXX/mangle.cpp b/clang/test/CodeGenCXX/mangle.cpp index c12fe5014f8..2cdfd1929ac 100644 --- a/clang/test/CodeGenCXX/mangle.cpp +++ b/clang/test/CodeGenCXX/mangle.cpp @@ -1024,6 +1024,12 @@ namespace test51 { template void fun<S1<int> >(); // CHECK-LABEL: @_ZN6test513funI2S1IiEEEDTcldtcvT__EdnS3_EEv + enum E {}; + template <typename T> + struct X { + struct Y {}; + }; + template <typename T> decltype(S1<T>().~S1<T>()) fun1() {}; template <typename U, typename T> @@ -1036,6 +1042,10 @@ namespace test51 { decltype(S1<int>().~S1<T>()) fun5(){}; template <template <typename T> class U> decltype(S1<int>().~U<int>()) fun6(){}; + template <typename T> + decltype(E().E::~T()) fun7() {} + template <template <typename> class U> + decltype(X<int>::Y().U<int>::Y::~Y()) fun8() {} template void fun1<int>(); // CHECK-LABEL: @_ZN6test514fun1IiEEDTcldtcv2S1IT_E_Edn2S1IS2_EEEv template void fun2<S1<int>, int>(); @@ -1045,6 +1055,10 @@ namespace test51 { template void fun4<int>(); // CHECK-LABEL: @_ZN6test514fun4IiEEDTcmcldtcv2S1IT_E_Edn2S1IS2_EEcldtcvS3__Edn2S1IS2_EEEv template void fun5<int>(); - // CHECK-LABEL: @_ZN6test514fun6I2S1EEDTcldtcvS1_IiE_EdnT_IiEEEv + // CHECK-LABEL: @_ZN6test514fun5IiEEDTcldtcv2S1IiE_Edn2S1IT_EEEv template void fun6<S1>(); + // CHECK-LABEL: @_ZN6test514fun6I2S1EEDTcldtcvS1_IiE_EdnT_IiEEEv + template void fun7<E>(); + // CHECK-LABEL: @_ZN6test514fun7INS_1EEEEDTcldtcvS1__Esr1EEdnT_EEv + template void fun8<X>(); } |

