r314236 - Basic: support Preserve{Most,All} CC on Windows

Saleem Abdulrasool via cfe-commits cfe-commits at lists.llvm.org
Tue Sep 26 12:26:01 PDT 2017


Author: compnerd
Date: Tue Sep 26 12:26:01 2017
New Revision: 314236

URL: http://llvm.org/viewvc/llvm-project?rev=314236&view=rev
Log:
Basic: support Preserve{Most,All} CC on Windows

Add support for the `preserve_mostcc` and `preserve_allcc` on Windows
x86_64 and AArch64.  This is used by Swift.

Modified:
    cfe/trunk/lib/Basic/Targets/AArch64.cpp
    cfe/trunk/lib/Basic/Targets/X86.h
    cfe/trunk/test/CodeGen/preserve-call-conv.c
    cfe/trunk/test/Sema/preserve-call-conv.c

Modified: cfe/trunk/lib/Basic/Targets/AArch64.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/AArch64.cpp?rev=314236&r1=314235&r2=314236&view=diff
==============================================================================
--- cfe/trunk/lib/Basic/Targets/AArch64.cpp (original)
+++ cfe/trunk/lib/Basic/Targets/AArch64.cpp Tue Sep 26 12:26:01 2017
@@ -452,6 +452,8 @@ WindowsARM64TargetInfo::checkCallingConv
     return CCCR_Ignore;
   case CC_C:
   case CC_OpenCLKernel:
+  case CC_PreserveMost:
+  case CC_PreserveAll:
   case CC_Win64:
     return CCCR_OK;
   default:

Modified: cfe/trunk/lib/Basic/Targets/X86.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/X86.h?rev=314236&r1=314235&r2=314236&view=diff
==============================================================================
--- cfe/trunk/lib/Basic/Targets/X86.h (original)
+++ cfe/trunk/lib/Basic/Targets/X86.h Tue Sep 26 12:26:01 2017
@@ -916,6 +916,8 @@ public:
     case CC_C:
     case CC_X86VectorCall:
     case CC_IntelOclBicc:
+    case CC_PreserveMost:
+    case CC_PreserveAll:
     case CC_X86_64SysV:
     case CC_Swift:
     case CC_X86RegCall:

Modified: cfe/trunk/test/CodeGen/preserve-call-conv.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/preserve-call-conv.c?rev=314236&r1=314235&r2=314236&view=diff
==============================================================================
--- cfe/trunk/test/CodeGen/preserve-call-conv.c (original)
+++ cfe/trunk/test/CodeGen/preserve-call-conv.c Tue Sep 26 12:26:01 2017
@@ -1,6 +1,9 @@
 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm < %s | FileCheck %s
 // RUN: %clang_cc1 -triple arm64-unknown-unknown -emit-llvm < %s | FileCheck %s
 
+// RUN: %clang_cc1 -triple x86_64-unknown-windows-msvc -emit-llvm %s -o - | FileCheck %s
+// RUN: %clang_cc1 -triple aarch64-unknown-windows-msvc -emit-llvm %s -o - | FileCheck %s
+
 // Check that the preserve_most calling convention attribute at the source level
 // is lowered to the corresponding calling convention attrribute at the LLVM IR
 // level.

Modified: cfe/trunk/test/Sema/preserve-call-conv.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/preserve-call-conv.c?rev=314236&r1=314235&r2=314236&view=diff
==============================================================================
--- cfe/trunk/test/Sema/preserve-call-conv.c (original)
+++ cfe/trunk/test/Sema/preserve-call-conv.c Tue Sep 26 12:26:01 2017
@@ -1,5 +1,8 @@
 // RUN: %clang_cc1 %s -fsyntax-only -triple x86_64-unknown-unknown -verify
 // RUN: %clang_cc1 %s -fsyntax-only -triple arm64-unknown-unknown -verify
+// RUN: %clang_cc1 %s -fsyntax-only -triple x86_64-unknown-windows-msvc -verify
+// RUN: %clang_cc1 %s -fsyntax-only -triple aarch64-unknown-windows-msvc -verify
+
 typedef void typedef_fun_t(int);
 
 void __attribute__((preserve_most)) foo(void *ptr) {




More information about the cfe-commits mailing list