Skip to content

Commit 65c4b28

Browse files
[clang] Add __has_feature(swiftcc) support
This patch adds `swiftcc` feature to check if the target supports Swift calling convention as well as we do for `swiftasynccc`.
1 parent 2ad9706 commit 65c4b28

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

clang/include/clang/Basic/Features.def

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,9 @@ FEATURE(memory_sanitizer,
102102
FEATURE(thread_sanitizer, LangOpts.Sanitize.has(SanitizerKind::Thread))
103103
FEATURE(dataflow_sanitizer, LangOpts.Sanitize.has(SanitizerKind::DataFlow))
104104
FEATURE(scudo, LangOpts.Sanitize.hasOneOf(SanitizerKind::Scudo))
105+
FEATURE(swiftcc,
106+
PP.getTargetInfo().checkCallingConvention(CC_Swift) ==
107+
clang::TargetInfo::CCCR_OK)
105108
FEATURE(swiftasynccc,
106109
PP.getTargetInfo().checkCallingConvention(CC_SwiftAsync) ==
107110
clang::TargetInfo::CCCR_OK)

clang/test/Sema/swift-call-conv.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
// RUN: %clang_cc1 -triple aarch64-unknown-windows-msvc -fsyntax-only %s -verify
22
// RUN: %clang_cc1 -triple thumbv7-unknown-windows-msvc -fsyntax-only %s -verify
33
// RUN: %clang_cc1 -triple x86_64-unknown-windows-msvc -fsyntax-only %s -verify
4+
// RISC-V does not support swiftcall
5+
// RUN: %clang_cc1 -triple riscv32-unknown-elf -fsyntax-only %s -verify
46

7+
#if __has_feature(swiftcc)
58
// expected-no-diagnostics
6-
9+
#else
10+
// expected-warning@+2 {{'__swiftcall__' calling convention is not supported for this target}}
11+
#endif
712
void __attribute__((__swiftcall__)) f(void) {}

0 commit comments

Comments
 (0)