================
@@ -0,0 +1,212 @@
+// RUN: %clang_cc1 -fsyntax-only -verify %s
+// RUN: %clang_cc1 -fsyntax-only -verify
-fexperimental-new-constant-interpreter %s
+
+void test_basic_type_checks() {
+ static_assert(__is_same(char, decltype(__builtin_bswapg((char)0))), "");
+ static_assert(__is_same(unsigned char, decltype(__builtin_bswapg((unsigned
char)0))), "");
+ static_assert(__is_same(short, decltype(__builtin_bswapg((short)0))), "");
+ static_assert(__is_same(unsigned short, decltype(__builtin_bswapg((unsigned
short)0))), "");
+ static_assert(__is_same(int, decltype(__builtin_bswapg((int)0))), "");
+ static_assert(__is_same(unsigned int, decltype(__builtin_bswapg((unsigned
int)0))), "");
+ static_assert(__is_same(long, decltype(__builtin_bswapg((long)0))), "");
+ static_assert(__is_same(unsigned long, decltype(__builtin_bswapg((unsigned
long)0))), "");
+}
+
+template<typename T>
+void test_template_type_check() {
+ static_assert(__is_same(T, decltype(__builtin_bswapg(T{}))),
+ "bswapg should return the same type as its argument");
+ constexpr T zero{};
+ constexpr T max = ~T{};
+ constexpr T one = T{1};
+
+ static_assert(__is_same(T, decltype(__builtin_bswapg(zero))), "");
+ static_assert(__is_same(T, decltype(__builtin_bswapg(max))), "");
+ static_assert(__is_same(T, decltype(__builtin_bswapg(one))), "");
+}
+template void test_template_type_check<char>();
+template void test_template_type_check<unsigned char>();
+template void test_template_type_check<short>();
+template void test_template_type_check<unsigned short>();
+template void test_template_type_check<int>();
+template void test_template_type_check<unsigned int>();
+template void test_template_type_check<long>();
+template void test_template_type_check<unsigned long>();
----------------
ojhunt wrote:
BitInts once more :D
https://github.com/llvm/llvm-project/pull/162433
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits