diff --git a/clang/include/clang/Basic/Builtins.td b/clang/include/clang/Basic/Builtins.td index a7e2ee30d9d7325..bda8a48be92bda8 100644 --- a/clang/include/clang/Basic/Builtins.td +++ b/clang/include/clang/Basic/Builtins.td @@ -1198,13 +1198,13 @@ def AllowRuntimeCheck : Builtin { def ShuffleVector : Builtin { let Spellings = ["__builtin_shufflevector"]; - let Attributes = [NoThrow, Const, CustomTypeChecking]; + let Attributes = [NoThrow, Const, CustomTypeChecking, Constexpr]; let Prototype = "void(...)"; } def ConvertVector : Builtin { let Spellings = ["__builtin_convertvector"]; - let Attributes = [NoThrow, Const, CustomTypeChecking]; + let Attributes = [NoThrow, Const, CustomTypeChecking, Constexpr]; let Prototype = "void(...)"; } diff --git a/clang/test/Preprocessor/feature_tests.cpp b/clang/test/Preprocessor/feature_tests.cpp index 3bda3db70ed0dad..029f446113af450 100644 --- a/clang/test/Preprocessor/feature_tests.cpp +++ b/clang/test/Preprocessor/feature_tests.cpp @@ -64,6 +64,14 @@ #error Clang should have these constexpr builtins #endif +#if !__has_constexpr_builtin(__builtin_convertvector) +#error Clang should have these constexpr builtins +#endif + +#if !__has_constexpr_builtin(__builtin_shufflevector) +#error Clang should have these constexpr builtins +#endif + #if __has_constexpr_builtin(__builtin_cbrt) #error This builtin should not be constexpr in Clang #endif