[clang] Add __has_extension(swiftcc)
support (#85347)
This commit is contained in:
parent
da2c98b558
commit
679e594d9d
@ -210,6 +210,13 @@ Attribute Changes in Clang
|
||||
and each must be a positive integer when provided. The parameter ``x`` is required, while ``y`` and
|
||||
``z`` are optional with default value of 1.
|
||||
|
||||
- The ``swiftasynccc`` attribute is now considered to be a Clang extension
|
||||
rather than a language standard feature. Please use
|
||||
``__has_extension(swiftasynccc)`` to check the availability of this attribute
|
||||
for the target platform instead of ``__has_feature(swiftasynccc)``. Also,
|
||||
added a new extension query ``__has_extension(swiftcc)`` corresponding to the
|
||||
``__attribute__((swiftcc))`` attribute.
|
||||
|
||||
Improvements to Clang's diagnostics
|
||||
-----------------------------------
|
||||
- Clang now applies syntax highlighting to the code snippets it
|
||||
|
@ -5137,10 +5137,11 @@ that does not. A single parameter may not have multiple ABI treatment
|
||||
attributes.
|
||||
|
||||
Support for this feature is target-dependent, although it should be
|
||||
supported on every target that Swift supports. Query for this support
|
||||
with ``__has_attribute(swiftcall)``. This implies support for the
|
||||
``swift_context``, ``swift_error_result``, and ``swift_indirect_result``
|
||||
attributes.
|
||||
supported on every target that Swift supports. Query for this attribute
|
||||
with ``__has_attribute(swiftcall)``. Query if the target supports the
|
||||
calling convention with ``__has_extension(swiftcc)``. This implies
|
||||
support for the ``swift_context``, ``swift_error_result``, and
|
||||
``swift_indirect_result`` attributes.
|
||||
}];
|
||||
}
|
||||
|
||||
@ -5187,6 +5188,10 @@ the following:
|
||||
semantically be performed after a guaranteed tail call, such as the
|
||||
non-trivial destruction of a local variable or temporary,
|
||||
then the program is ill-formed.
|
||||
|
||||
Query for this attribute with ``__has_attribute(swiftasynccall)``. Query if
|
||||
the target supports the calling convention with
|
||||
``__has_extension(swiftasynccc)``.
|
||||
}];
|
||||
}
|
||||
|
||||
|
@ -102,7 +102,10 @@ FEATURE(thread_sanitizer, LangOpts.Sanitize.has(SanitizerKind::Thread))
|
||||
FEATURE(dataflow_sanitizer, LangOpts.Sanitize.has(SanitizerKind::DataFlow))
|
||||
FEATURE(scudo, LangOpts.Sanitize.hasOneOf(SanitizerKind::Scudo))
|
||||
FEATURE(ptrauth_intrinsics, LangOpts.PointerAuthIntrinsics)
|
||||
FEATURE(swiftasynccc,
|
||||
EXTENSION(swiftcc,
|
||||
PP.getTargetInfo().checkCallingConvention(CC_Swift) ==
|
||||
clang::TargetInfo::CCCR_OK)
|
||||
EXTENSION(swiftasynccc,
|
||||
PP.getTargetInfo().checkCallingConvention(CC_SwiftAsync) ==
|
||||
clang::TargetInfo::CCCR_OK)
|
||||
FEATURE(pragma_stdc_cx_limited_range, true)
|
||||
|
@ -1,7 +1,19 @@
|
||||
// RUN: %clang_cc1 -triple aarch64-unknown-windows-msvc -fsyntax-only %s -verify
|
||||
// RUN: %clang_cc1 -triple thumbv7-unknown-windows-msvc -fsyntax-only %s -verify
|
||||
// RUN: %clang_cc1 -triple x86_64-unknown-windows-msvc -fsyntax-only %s -verify
|
||||
// RISC-V does not support swiftcall
|
||||
// RUN: %clang_cc1 -triple riscv32-unknown-elf -fsyntax-only %s -verify
|
||||
|
||||
#if __has_extension(swiftcc)
|
||||
// expected-no-diagnostics
|
||||
|
||||
#else
|
||||
// expected-warning@+2 {{'__swiftcall__' calling convention is not supported for this target}}
|
||||
#endif
|
||||
void __attribute__((__swiftcall__)) f(void) {}
|
||||
|
||||
#if __has_extension(swiftasynccc)
|
||||
// expected-no-diagnostics
|
||||
#else
|
||||
// expected-warning@+2 {{'__swiftasynccall__' calling convention is not supported for this target}}
|
||||
#endif
|
||||
void __attribute__((__swiftasynccall__)) g(void) {}
|
||||
|
Loading…
x
Reference in New Issue
Block a user