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) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits