================
@@ -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

Reply via email to