r324439 - AST: support SwiftCC on MS ABI

Saleem Abdulrasool via cfe-commits cfe-commits at lists.llvm.org
Tue Feb 6 23:01:43 PST 2018


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.


> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180206/b9ee990f/attachment-0001.html>


More information about the cfe-commits mailing list