r324439 - AST: support SwiftCC on MS ABI
Hans Wennborg via cfe-commits
cfe-commits at lists.llvm.org
Wed Feb 7 00:58:34 PST 2018
On Wed, Feb 7, 2018 at 8:01 AM, Saleem Abdulrasool via cfe-commits
<cfe-commits at lists.llvm.org> wrote:
> On Tue, Feb 6, 2018 at 5:55 PM, Saleem Abdulrasool via cfe-commits
> <cfe-commits at lists.llvm.org> wrote:
>>
>> Author: compnerd
>> Date: Tue Feb 6 17:55:08 2018
>> New Revision: 324439
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=324439&view=rev
>> Log:
>> AST: support SwiftCC on MS ABI
>>
>> Microsoft has reserved the identifier 'S' as the swift calling
>> convention. Decorate the symbols appropriately. This enables swift on
>> Windows.
>
>
> Hans, thoughts on getting this into 6.0? This is needed to enable swift on
> Windows.
Sure, why not. r324460.
>
>>
>> Added:
>> cfe/trunk/test/CodeGenCXX/msabi-swiftcall-cc.cpp
>> Modified:
>> cfe/trunk/lib/AST/MicrosoftMangle.cpp
>>
>> Modified: cfe/trunk/lib/AST/MicrosoftMangle.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/MicrosoftMangle.cpp?rev=324439&r1=324438&r2=324439&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/AST/MicrosoftMangle.cpp (original)
>> +++ cfe/trunk/lib/AST/MicrosoftMangle.cpp Tue Feb 6 17:55:08 2018
>> @@ -950,11 +950,10 @@ void MicrosoftCXXNameMangler::mangleUnqu
>> }
>> }
>>
>> +// <postfix> ::= <unqualified-name> [<postfix>]
>> +// ::= <substitution> [<postfix>]
>> void MicrosoftCXXNameMangler::mangleNestedName(const NamedDecl *ND) {
>> - // <postfix> ::= <unqualified-name> [<postfix>]
>> - // ::= <substitution> [<postfix>]
>> const DeclContext *DC = getEffectiveDeclContext(ND);
>> -
>> while (!DC->isTranslationUnit()) {
>> if (isa<TagDecl>(ND) || isa<VarDecl>(ND)) {
>> unsigned Disc;
>> @@ -2136,6 +2135,7 @@ void MicrosoftCXXNameMangler::mangleCall
>> case CC_X86StdCall: Out << 'G'; break;
>> case CC_X86FastCall: Out << 'I'; break;
>> case CC_X86VectorCall: Out << 'Q'; break;
>> + case CC_Swift: Out << 'S'; break;
>> case CC_X86RegCall: Out << 'w'; break;
>> }
>> }
>>
>> Added: cfe/trunk/test/CodeGenCXX/msabi-swiftcall-cc.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/msabi-swiftcall-cc.cpp?rev=324439&view=auto
>>
>> ==============================================================================
>> --- cfe/trunk/test/CodeGenCXX/msabi-swiftcall-cc.cpp (added)
>> +++ cfe/trunk/test/CodeGenCXX/msabi-swiftcall-cc.cpp Tue Feb 6 17:55:08
>> 2018
>> @@ -0,0 +1,28 @@
>> +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fdeclspec
>> -emit-llvm %s -o - | FileCheck %s
>> +
>> +void __attribute__((__swiftcall__)) f() {}
>> +// CHECK-DAG: @"\01?f@@YSXXZ"
>> +
>> +void (__attribute__((__swiftcall__)) *p)();
>> +// CHECK-DAG: @"\01?p@@3P6SXXZA"
>> +
>> +namespace {
>> +void __attribute__((__swiftcall__)) __attribute__((__used__)) f() { }
>> +// CHECK-DAG: "\01?f@?A@@YSXXZ"
>> +}
>> +
>> +namespace n {
>> +void __attribute__((__swiftcall__)) f() {}
>> +// CHECK-DAG: "\01?f at n@@YSXXZ"
>> +}
>> +
>> +struct __declspec(dllexport) S {
>> + S(const S &) = delete;
>> + S & operator=(const S &) = delete;
>> + void __attribute__((__swiftcall__)) m() { }
>> + // CHECK-DAG: "\01?m at S@@QASXXZ"
>> +};
>> +
>> +void f(void (__attribute__((__swiftcall__))())) {}
>> +// CHECK-DAG: "\01?f@@YAXP6SXXZ at Z"
>> +
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
>
>
>
> --
> Saleem Abdulrasool
> compnerd (at) compnerd (dot) org
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
More information about the cfe-commits
mailing list