xref: /llvm-project/clang/test/CodeGenCXX/mangle-ms-auto-templates-nullptr.cpp (revision 43b88851cefe68645aa59b1fccc8390a8a31f469)
1d1dc4169SMax Winkler // RUN: %clang_cc1 -std=c++17 -fms-compatibility-version=19.20 -emit-llvm %s -o - -fms-extensions -fdelayed-template-parsing -triple=x86_64-pc-windows-msvc | FileCheck --check-prefix=AFTER %s
2d1dc4169SMax Winkler // RUN: %clang_cc1 -std=c++17 -fms-compatibility-version=19.14 -emit-llvm %s -o - -fms-extensions -fdelayed-template-parsing -triple=x86_64-pc-windows-msvc | FileCheck --check-prefix=BEFORE %s
3d1dc4169SMax Winkler 
4d1dc4169SMax Winkler template <auto a>
5d1dc4169SMax Winkler class AutoParmTemplate {
6d1dc4169SMax Winkler public:
7d1dc4169SMax Winkler     AutoParmTemplate() {}
8d1dc4169SMax Winkler };
9d1dc4169SMax Winkler 
10d1dc4169SMax Winkler template <auto a>
11d1dc4169SMax Winkler auto AutoFunc() {
12d1dc4169SMax Winkler     return a;
13d1dc4169SMax Winkler }
14d1dc4169SMax Winkler 
15d1dc4169SMax Winkler void template_mangling() {
16d1dc4169SMax Winkler 
17d1dc4169SMax Winkler   AutoParmTemplate<nullptr> auto_nullptr;
18d1dc4169SMax Winkler   // AFTER: call {{.*}} @"??0?$AutoParmTemplate@$M$$T0A@@@QEAA@XZ"
19d1dc4169SMax Winkler   // BEFORE: call {{.*}} @"??0?$AutoParmTemplate@$0A@@@QEAA@XZ"
20d1dc4169SMax Winkler 
21d1dc4169SMax Winkler   AutoFunc<nullptr>();
22*43b88851SMax Winkler   // AFTER: call {{.*}} @"??$AutoFunc@$M$$T0A@@@YA?A_PXZ"
23d1dc4169SMax Winkler   // BEFORE: call {{.*}} @"??$AutoFunc@$0A@@@YA?A?<auto>@@XZ"
24d1dc4169SMax Winkler }
25