diff options
author | Saleem Abdulrasool <compnerd@compnerd.org> | 2018-04-02 22:25:50 +0000 |
---|---|---|
committer | Saleem Abdulrasool <compnerd@compnerd.org> | 2018-04-02 22:25:50 +0000 |
commit | 13aeee0d36199e0c54c1b045540383d8383b030c (patch) | |
tree | 16ffefc1d8f34681c7bd921f4dce61aa974de645 /clang/test/CodeGenCXX/msabi-swiftcall-cc.cpp | |
parent | 30b215e8f742a6d2ef155aec9887f49c3e9ad501 (diff) | |
download | bcm5719-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.cpp | 47 |
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" |