================ @@ -14,13 +14,18 @@ void __builtin_va_copy(double d); // expected-error@+2 {{cannot redeclare builtin function '__builtin_va_end'}} // expected-note@+1 {{'__builtin_va_end' is a builtin with type}} void __builtin_va_end(__builtin_va_list); -// RUN: %clang_cc1 %s -fsyntax-only -verify -// RUN: %clang_cc1 %s -fsyntax-only -verify -x c void __va_start(__builtin_va_list*, ...); + void *__builtin_assume_aligned(const void *, size_t, ...); #ifdef __cplusplus -void *__builtin_assume_aligned(const void *, size_t, ...) noexcept; -#else -void *__builtin_assume_aligned(const void *, size_t, ...); +constexpr void *__builtin_assume_aligned(const void *, size_t, ...); + void *__builtin_assume_aligned(const void *, size_t, ...) noexcept; +constexpr void *__builtin_assume_aligned(const void *, size_t, ...) noexcept; + void *__builtin_assume_aligned(const void *, size_t, ...) throw(); +constexpr void *__builtin_assume_aligned(const void *, size_t, ...) throw(); + ---------------- MitalAshok wrote:
For backwards compatibility (and compatibility with the same definitions in C or with GCC), to allow declarations with or without the `constexpr`. I suspect in any real code, it will always be declared without the `constexpr`. The other solutions is to keep them all as `ConstexprSpecKind::Unspecified` like we currently do, but this is asymmetric with `consteval` builtins which will be marked `ConstexprSpecKind::Consteval`, and leads to the builtin versions of `std::move`/`std::forward`/constexpr cmath functions to have differing `getConstexprKind()` from their non-builtin counterparts https://github.com/llvm/llvm-project/pull/91894 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits