summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/msabi-swiftcall-cc.cpp
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2018-04-02 22:25:50 +0000
committerSaleem Abdulrasool <compnerd@compnerd.org>2018-04-02 22:25:50 +0000
commit13aeee0d36199e0c54c1b045540383d8383b030c (patch)
tree16ffefc1d8f34681c7bd921f4dce61aa974de645 /clang/test/CodeGenCXX/msabi-swiftcall-cc.cpp
parent30b215e8f742a6d2ef155aec9887f49c3e9ad501 (diff)
downloadbcm5719-llvm-13aeee0d36199e0c54c1b045540383d8383b030c.tar.gz
bcm5719-llvm-13aeee0d36199e0c54c1b045540383d8383b030c.zip
CodeGenCXX: support PreserveMostCC in MS ABI
Microsoft has reserved 'U' for the PreserveMostCC which is used in the swift runtime. Add support for this. This allows the swift runtime to be built for Windows again. llvm-svn: 329025
Diffstat (limited to 'clang/test/CodeGenCXX/msabi-swiftcall-cc.cpp')
-rw-r--r--clang/test/CodeGenCXX/msabi-swiftcall-cc.cpp47
1 files changed, 43 insertions, 4 deletions
diff --git a/clang/test/CodeGenCXX/msabi-swiftcall-cc.cpp b/clang/test/CodeGenCXX/msabi-swiftcall-cc.cpp
index e74c6b080a4..d8205ed192a 100644
--- a/clang/test/CodeGenCXX/msabi-swiftcall-cc.cpp
+++ b/clang/test/CodeGenCXX/msabi-swiftcall-cc.cpp
@@ -1,28 +1,67 @@
// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fdeclspec -emit-llvm %s -o - | FileCheck %s
+// RUN: %clang_cc1 -triple x86_64-unknown-windows-msvc -fdeclspec -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-64
void __attribute__((__swiftcall__)) f() {}
// CHECK-DAG: @"?f@@YSXXZ"
+// CHECK-64-DAG: @"?f@@YSXXZ"
void (__attribute__((__swiftcall__)) *p)();
// CHECK-DAG: @"?p@@3P6SXXZA"
+// CHECK-64-DAG: @"?p@@3P6SXXZEA
namespace {
void __attribute__((__swiftcall__)) __attribute__((__used__)) f() { }
-// CHECK-DAG: "?f@?A@@YSXXZ"
}
+// CHECK-DAG: @"?f@?A@@YSXXZ"
+// CHECK-64-DAG: @"?f@?A@@YSXXZ"
namespace n {
void __attribute__((__swiftcall__)) f() {}
-// CHECK-DAG: "?f@n@@YSXXZ"
}
+// CHECK-DAG: @"?f@n@@YSXXZ"
+// CHECK-64-DAG: @"?f@n@@YSXXZ"
struct __declspec(dllexport) S {
S(const S &) = delete;
S & operator=(const S &) = delete;
void __attribute__((__swiftcall__)) m() { }
- // CHECK-DAG: "?m@S@@QASXXZ"
};
+// CHECK-DAG: @"?m@S@@QASXXZ"
+// CHECK-64-DAG: @"?m@S@@QEASXXZ"
void f(void (__attribute__((__swiftcall__))())) {}
-// CHECK-DAG: "?f@@YAXP6SXXZ@Z"
+// CHECK-DAG: @"?f@@YAXP6SXXZ@Z"
+// CHECK-64-DAG: @"?f@@YAXP6SXXZ@Z"
+
+void __attribute__((__preserve_most__)) g() {}
+// CHECK-DAG: @"?g@@YUXXZ"
+// CHECK-64-DAG: @"?g@@YUXXZ"
+
+void (__attribute__((__preserve_most__)) *q)();
+// CHECK-DAG: @"?q@@3P6UXXZA"
+// CHECK-64-DAG: @"?q@@3P6UXXZEA"
+
+namespace {
+void __attribute__((__preserve_most__)) __attribute__((__used__)) g() {}
+}
+// CHECK-DAG: @"?g@?A@@YUXXZ"
+// CHECK-64-DAG: @"?g@?A@@YUXXZ"
+
+namespace n {
+void __attribute__((__preserve_most__)) g() {}
+}
+// CHECK-DAG: @"?g@n@@YUXXZ"
+// CHECK-64-DAG: @"?g@n@@YUXXZ"
+
+struct __declspec(dllexport) T {
+ T(const T &) = delete;
+ T & operator=(const T &) = delete;
+ void __attribute__((__preserve_most__)) m() {}
+};
+// CHECK-DAG: @"?m@T@@QAUXXZ"
+// CHECK-64-DAG: @"?m@T@@QEAUXXZ"
+
+void g(void (__attribute__((__preserve_most__))())) {}
+// CHECK-DAG: @"?g@@YAXP6UXXZ@Z"
+// CHECK-64-DAG: @"?g@@YAXP6UXXZ@Z"
OpenPOWER on IntegriCloud