summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/mangle-ms-cxx11.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2016-12-06 17:01:02 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2016-12-06 17:01:02 +0000
commit984498ff9de8f6d89911485faac3e8c203461ff3 (patch)
treeda73bdde7a01d3402b6c3b005e9aa2c4d394166f /clang/test/CodeGenCXX/mangle-ms-cxx11.cpp
parent4a2979ce12da345e98b8d96be30eb4e0efa9efb7 (diff)
downloadbcm5719-llvm-984498ff9de8f6d89911485faac3e8c203461ff3.tar.gz
bcm5719-llvm-984498ff9de8f6d89911485faac3e8c203461ff3.zip
[MS ABI] Implement more of the Itanium mangling rules
We didn't implement handle corner cases like: - lambdas used to initialize a field - lambdas in default argument initializers This fixes PR31197. Differential Revision: https://reviews.llvm.org/D27226 llvm-svn: 288826
Diffstat (limited to 'clang/test/CodeGenCXX/mangle-ms-cxx11.cpp')
-rw-r--r--clang/test/CodeGenCXX/mangle-ms-cxx11.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/mangle-ms-cxx11.cpp b/clang/test/CodeGenCXX/mangle-ms-cxx11.cpp
index 8e2577b03e2..f21012b602a 100644
--- a/clang/test/CodeGenCXX/mangle-ms-cxx11.cpp
+++ b/clang/test/CodeGenCXX/mangle-ms-cxx11.cpp
@@ -318,3 +318,28 @@ void unaligned_foo8_S::unaligned_foo8() volatile __unaligned {}
// CHECK-DAG: @"\01?unaligned_foo8@unaligned_foo8_S@@QFCEXXZ"
+namespace PR31197 {
+struct A {
+ // CHECK-DAG: define linkonce_odr x86_thiscallcc i32* @"\01??R<lambda_1>@x@A@PR31197@@QBE@XZ"(
+ int *x = []() {
+ static int white;
+ // CHECK-DAG: @"\01?white@?1???R<lambda_1>@x@A@PR31197@@QBE@XZ@4HA"
+ return &white;
+ }();
+ // CHECK-DAG: define linkonce_odr x86_thiscallcc i32* @"\01??R<lambda_1>@y@A@PR31197@@QBE@XZ"(
+ int *y = []() {
+ static int black;
+ // CHECK-DAG: @"\01?black@?1???R<lambda_1>@y@A@PR31197@@QBE@XZ@4HA"
+ return &black;
+ }();
+ using FPtrTy = void(void);
+ static void default_args(FPtrTy x = [] {}, FPtrTy y = [] {}, int z = [] { return 1; }() + [] { return 2; }()) {}
+ // CHECK-DAG: @"\01??R<lambda_1_1>@?0??default_args@A@PR31197@@SAXP6AXXZ0H@Z@QBE@XZ"(
+ // CHECK-DAG: @"\01??R<lambda_1_2>@?0??default_args@A@PR31197@@SAXP6AXXZ0H@Z@QBE@XZ"(
+ // CHECK-DAG: @"\01??R<lambda_2_1>@?0??default_args@A@PR31197@@SAXP6AXXZ0H@Z@QBE@XZ"(
+ // CHECK-DAG: @"\01??R<lambda_3_1>@?0??default_args@A@PR31197@@SAXP6AXXZ0H@Z@QBE@XZ"(
+};
+A a;
+
+int call_it = (A::default_args(), 1);
+}
OpenPOWER on IntegriCloud