xref: /llvm-project/clang/test/CodeGenCXX/mangle-ms-cxx17.cpp (revision e3b64eb31c0e9a9f1ac4891b834d71532e545cad)
1*e3b64eb3SSimon Pilgrim // RUN: %clang_cc1 -std=c++1z -fms-extensions -emit-llvm %s -o - -triple=i386-pc-win32 -fms-compatibility-version=19.10 | FileCheck -allow-deprecated-dag-overlap %s
2*e3b64eb3SSimon Pilgrim // RUN: %clang_cc1 -std=c++1z -fms-extensions -emit-llvm %s -o - -triple=i386-pc-win32 -fms-compatibility-version=19.00 | FileCheck -allow-deprecated-dag-overlap %s
3a47dc841SNico Weber 
4a47dc841SNico Weber struct S {
5a47dc841SNico Weber     int x;
6a47dc841SNico Weber     double y;
7a47dc841SNico Weber };
8a47dc841SNico Weber S f();
9a47dc841SNico Weber 
10a47dc841SNico Weber // CHECK-DAG: "?$S1@@3US@@B"
11a47dc841SNico Weber const auto [x0, y0] = f();
12a47dc841SNico Weber // CHECK-DAG: "?$S2@@3US@@B"
13a47dc841SNico Weber const auto [x1, y1] = f();
14a47dc841SNico Weber 
15a47dc841SNico Weber static union {
16a47dc841SNico Weber int a;
17a47dc841SNico Weber double b;
18a47dc841SNico Weber };
19a47dc841SNico Weber 
20a47dc841SNico Weber // CHECK-DAG: "?$S4@@3US@@B"
21a47dc841SNico Weber const auto [x2, y2] = f();
22e408cba8SZequan Wu 
23e408cba8SZequan Wu // CHECK-DAG: "?i1@@3V<lambda_1>@0@B"
__anon251f0d960202(auto x) 24e408cba8SZequan Wu inline const auto i1 = [](auto x) { return 0; };
25e408cba8SZequan Wu // CHECK-DAG: "?i2@@3V<lambda_1>@0@B"
__anon251f0d960302(auto x) 26e408cba8SZequan Wu inline const auto i2 = [](auto x) { return 1; };
27e408cba8SZequan Wu // CHECK-DAG: "??$?RH@<lambda_1>@i1@@QBE?A?<auto>@@H@Z"
28e408cba8SZequan Wu // CHECK-DAG: "??$?RH@<lambda_1>@i2@@QBE?A?<auto>@@H@Z"
g()29e408cba8SZequan Wu int g() {return i1(1) + i2(1); }
30