Adjust clang format to the new versions, revert broken macro layout (#714)
This commit is contained in:
committed by
GitHub
parent
ed877433f3
commit
2ff2316227
@@ -478,11 +478,11 @@ template <typename Type> __global__ void bf16_cvt_to_integral(Type* in, float* o
|
||||
TEMPLATE_TEST_CASE("Unit_bf16_conversion_to_integral_type", , unsigned short, short, int,
|
||||
unsigned int) {
|
||||
constexpr TestType start = std::is_unsigned<TestType>::value
|
||||
? std::numeric_limits<unsigned short>::min()
|
||||
: std::numeric_limits<short>::min();
|
||||
? std::numeric_limits<unsigned short>::min()
|
||||
: std::numeric_limits<short>::min();
|
||||
constexpr TestType end = std::is_unsigned<TestType>::value
|
||||
? std::numeric_limits<unsigned short>::max()
|
||||
: std::numeric_limits<short>::max();
|
||||
? std::numeric_limits<unsigned short>::max()
|
||||
: std::numeric_limits<short>::max();
|
||||
const size_t size = (start < 0) ? end - start : end + start;
|
||||
|
||||
TestType* d_input;
|
||||
|
||||
@@ -30,9 +30,9 @@ __device__ static void* dev_ptr[num_threads][GRIDSIZE];
|
||||
* This kernel allocates and deallocates in every thread
|
||||
* of every block.
|
||||
*/
|
||||
template <typename T>
|
||||
static __global__ void kerTestDynamicAllocInAllThread(T* outputBuf, int test_type, T value,
|
||||
size_t perThreadSize) {
|
||||
template <typename T> static __global__ void kerTestDynamicAllocInAllThread(T* outputBuf,
|
||||
int test_type, T value,
|
||||
size_t perThreadSize) {
|
||||
int myId = threadIdx.x + blockDim.x * blockIdx.x;
|
||||
// Allocate
|
||||
size_t size = 0;
|
||||
|
||||
@@ -623,8 +623,8 @@ template <typename T> __FP8_DEVICE__ void e4m3_fnuz_fp8_cvt(T val, float* cvt1,
|
||||
|
||||
__hip_fp8_e4m3_fnuz tmp1;
|
||||
tmp1.__x = std::is_same<T, float>::value
|
||||
? __hip_cvt_float_to_fp8(val, __HIP_SATFINITE, __HIP_E4M3_FNUZ)
|
||||
: __hip_cvt_double_to_fp8(val, __HIP_SATFINITE, __HIP_E4M3_FNUZ);
|
||||
? __hip_cvt_float_to_fp8(val, __HIP_SATFINITE, __HIP_E4M3_FNUZ)
|
||||
: __hip_cvt_double_to_fp8(val, __HIP_SATFINITE, __HIP_E4M3_FNUZ);
|
||||
;
|
||||
*cvt2 = tmp1;
|
||||
#else
|
||||
@@ -641,8 +641,8 @@ template <typename T> __FP8_DEVICE__ void e5m2_fnuz_fp8_cvt(T val, float* cvt1,
|
||||
|
||||
__hip_fp8_e5m2_fnuz tmp1;
|
||||
tmp1.__x = std::is_same<T, float>::value
|
||||
? __hip_cvt_float_to_fp8(val, __HIP_SATFINITE, __HIP_E5M2_FNUZ)
|
||||
: __hip_cvt_double_to_fp8(val, __HIP_SATFINITE, __HIP_E5M2_FNUZ);
|
||||
? __hip_cvt_float_to_fp8(val, __HIP_SATFINITE, __HIP_E5M2_FNUZ)
|
||||
: __hip_cvt_double_to_fp8(val, __HIP_SATFINITE, __HIP_E5M2_FNUZ);
|
||||
;
|
||||
*cvt2 = tmp1;
|
||||
#else
|
||||
|
||||
@@ -170,8 +170,8 @@ TEMPLATE_TEST_CASE("Unit_fp8_ocp_correctness", "", float, double) {
|
||||
|
||||
__hip_fp8_e4m3 tmp;
|
||||
tmp.__x = std::is_same<TestType, float>::value
|
||||
? __hip_cvt_float_to_fp8(orig, __HIP_SATFINITE, __HIP_E4M3)
|
||||
: __hip_cvt_double_to_fp8(orig, __HIP_SATFINITE, __HIP_E4M3);
|
||||
? __hip_cvt_float_to_fp8(orig, __HIP_SATFINITE, __HIP_E4M3)
|
||||
: __hip_cvt_double_to_fp8(orig, __HIP_SATFINITE, __HIP_E4M3);
|
||||
;
|
||||
float cvt2 = tmp;
|
||||
|
||||
@@ -440,8 +440,8 @@ TEMPLATE_TEST_CASE("Unit_fp8_ocp_correctness", "", float, double) {
|
||||
|
||||
__hip_fp8_e5m2 tmp;
|
||||
tmp.__x = std::is_same<TestType, float>::value
|
||||
? __hip_cvt_float_to_fp8(orig, __HIP_SATFINITE, __HIP_E5M2)
|
||||
: __hip_cvt_double_to_fp8(orig, __HIP_SATFINITE, __HIP_E5M2);
|
||||
? __hip_cvt_float_to_fp8(orig, __HIP_SATFINITE, __HIP_E5M2)
|
||||
: __hip_cvt_double_to_fp8(orig, __HIP_SATFINITE, __HIP_E5M2);
|
||||
;
|
||||
float cvt2 = tmp;
|
||||
|
||||
@@ -780,8 +780,8 @@ TEMPLATE_TEST_CASE("Unit_fp8_fnuz_correctness", "", float, double) {
|
||||
|
||||
__hip_fp8_e4m3_fnuz tmp;
|
||||
tmp.__x = std::is_same<TestType, float>::value
|
||||
? __hip_cvt_float_to_fp8(orig, __HIP_SATFINITE, __HIP_E4M3_FNUZ)
|
||||
: __hip_cvt_double_to_fp8(orig, __HIP_SATFINITE, __HIP_E4M3_FNUZ);
|
||||
? __hip_cvt_float_to_fp8(orig, __HIP_SATFINITE, __HIP_E4M3_FNUZ)
|
||||
: __hip_cvt_double_to_fp8(orig, __HIP_SATFINITE, __HIP_E4M3_FNUZ);
|
||||
;
|
||||
float cvt2 = tmp;
|
||||
|
||||
@@ -1058,8 +1058,8 @@ TEMPLATE_TEST_CASE("Unit_fp8_fnuz_correctness", "", float, double) {
|
||||
|
||||
__hip_fp8_e5m2_fnuz tmp;
|
||||
tmp.__x = std::is_same<TestType, float>::value
|
||||
? __hip_cvt_float_to_fp8(orig, __HIP_SATFINITE, __HIP_E5M2_FNUZ)
|
||||
: __hip_cvt_double_to_fp8(orig, __HIP_SATFINITE, __HIP_E5M2_FNUZ);
|
||||
? __hip_cvt_float_to_fp8(orig, __HIP_SATFINITE, __HIP_E5M2_FNUZ)
|
||||
: __hip_cvt_double_to_fp8(orig, __HIP_SATFINITE, __HIP_E5M2_FNUZ);
|
||||
;
|
||||
float cvt2 = tmp;
|
||||
|
||||
|
||||
@@ -629,8 +629,8 @@ template <typename T> __FP8_DEVICE__ void e4m3_ocp_fp8_cvt(T val, float* cvt1, f
|
||||
|
||||
__hip_fp8_e4m3 tmp1;
|
||||
tmp1.__x = std::is_same<T, float>::value
|
||||
? __hip_cvt_float_to_fp8(val, __HIP_SATFINITE, __HIP_E4M3)
|
||||
: __hip_cvt_double_to_fp8(val, __HIP_SATFINITE, __HIP_E4M3);
|
||||
? __hip_cvt_float_to_fp8(val, __HIP_SATFINITE, __HIP_E4M3)
|
||||
: __hip_cvt_double_to_fp8(val, __HIP_SATFINITE, __HIP_E4M3);
|
||||
;
|
||||
*cvt2 = tmp1;
|
||||
#else
|
||||
@@ -647,8 +647,8 @@ template <typename T> __FP8_DEVICE__ void e5m2_ocp_fp8_cvt(T val, float* cvt1, f
|
||||
|
||||
__hip_fp8_e5m2 tmp1;
|
||||
tmp1.__x = std::is_same<T, float>::value
|
||||
? __hip_cvt_float_to_fp8(val, __HIP_SATFINITE, __HIP_E5M2)
|
||||
: __hip_cvt_double_to_fp8(val, __HIP_SATFINITE, __HIP_E5M2);
|
||||
? __hip_cvt_float_to_fp8(val, __HIP_SATFINITE, __HIP_E5M2)
|
||||
: __hip_cvt_double_to_fp8(val, __HIP_SATFINITE, __HIP_E5M2);
|
||||
;
|
||||
*cvt2 = tmp1;
|
||||
#else
|
||||
|
||||
@@ -398,27 +398,27 @@ static bool test_allcomplexMathFunc_host() {
|
||||
TEST_CASE("Unit_TestMathFuncComplex") {
|
||||
bool TestPassed = false;
|
||||
TestPassed = test_makehipComplex_dev<hipFloatComplex, float>() &&
|
||||
test_makehipComplex_dev<float2, float>() &&
|
||||
test_makehipComplex_dev<hipDoubleComplex, double>() &&
|
||||
test_makehipComplex_dev<double2, double>() &&
|
||||
test_complexMathFunc1_dev<hipFloatComplex, float>(COMPLEX_ADD) &&
|
||||
test_complexMathFunc1_dev<hipDoubleComplex, double>(COMPLEX_ADD) &&
|
||||
test_complexMathFunc1_dev<hipFloatComplex, float>(COMPLEX_SUB) &&
|
||||
test_complexMathFunc1_dev<hipDoubleComplex, double>(COMPLEX_SUB) &&
|
||||
test_complexMathFunc1_dev<hipFloatComplex, float>(COMPLEX_MUL) &&
|
||||
test_complexMathFunc1_dev<hipDoubleComplex, double>(COMPLEX_MUL) &&
|
||||
test_complexMathFunc1_dev<hipFloatComplex, float>(COMPLEX_DIV) &&
|
||||
test_complexMathFunc1_dev<hipDoubleComplex, double>(COMPLEX_DIV) &&
|
||||
test_complexMathFunc1_dev<hipFloatComplex, float>(COMPLEX_CONJ) &&
|
||||
test_complexMathFunc1_dev<hipDoubleComplex, double>(COMPLEX_CONJ) &&
|
||||
test_complexMathFunc2_dev<hipFloatComplex, float>(COMPLEX_REAL) &&
|
||||
test_complexMathFunc2_dev<hipDoubleComplex, double>(COMPLEX_REAL) &&
|
||||
test_complexMathFunc2_dev<hipFloatComplex, float>(COMPLEX_IMAG) &&
|
||||
test_complexMathFunc2_dev<hipDoubleComplex, double>(COMPLEX_IMAG) &&
|
||||
test_complexMathFunc2_dev<hipFloatComplex, float>(COMPLEX_SQABS) &&
|
||||
test_complexMathFunc2_dev<hipDoubleComplex, double>(COMPLEX_SQABS) &&
|
||||
test_complexMathFunc2_dev<hipFloatComplex, float>(COMPLEX_ABS) &&
|
||||
test_complexMathFunc2_dev<hipDoubleComplex, double>(COMPLEX_ABS) &&
|
||||
test_allcomplexMathFunc_host();
|
||||
test_makehipComplex_dev<float2, float>() &&
|
||||
test_makehipComplex_dev<hipDoubleComplex, double>() &&
|
||||
test_makehipComplex_dev<double2, double>() &&
|
||||
test_complexMathFunc1_dev<hipFloatComplex, float>(COMPLEX_ADD) &&
|
||||
test_complexMathFunc1_dev<hipDoubleComplex, double>(COMPLEX_ADD) &&
|
||||
test_complexMathFunc1_dev<hipFloatComplex, float>(COMPLEX_SUB) &&
|
||||
test_complexMathFunc1_dev<hipDoubleComplex, double>(COMPLEX_SUB) &&
|
||||
test_complexMathFunc1_dev<hipFloatComplex, float>(COMPLEX_MUL) &&
|
||||
test_complexMathFunc1_dev<hipDoubleComplex, double>(COMPLEX_MUL) &&
|
||||
test_complexMathFunc1_dev<hipFloatComplex, float>(COMPLEX_DIV) &&
|
||||
test_complexMathFunc1_dev<hipDoubleComplex, double>(COMPLEX_DIV) &&
|
||||
test_complexMathFunc1_dev<hipFloatComplex, float>(COMPLEX_CONJ) &&
|
||||
test_complexMathFunc1_dev<hipDoubleComplex, double>(COMPLEX_CONJ) &&
|
||||
test_complexMathFunc2_dev<hipFloatComplex, float>(COMPLEX_REAL) &&
|
||||
test_complexMathFunc2_dev<hipDoubleComplex, double>(COMPLEX_REAL) &&
|
||||
test_complexMathFunc2_dev<hipFloatComplex, float>(COMPLEX_IMAG) &&
|
||||
test_complexMathFunc2_dev<hipDoubleComplex, double>(COMPLEX_IMAG) &&
|
||||
test_complexMathFunc2_dev<hipFloatComplex, float>(COMPLEX_SQABS) &&
|
||||
test_complexMathFunc2_dev<hipDoubleComplex, double>(COMPLEX_SQABS) &&
|
||||
test_complexMathFunc2_dev<hipFloatComplex, float>(COMPLEX_ABS) &&
|
||||
test_complexMathFunc2_dev<hipDoubleComplex, double>(COMPLEX_ABS) &&
|
||||
test_allcomplexMathFunc_host();
|
||||
REQUIRE(TestPassed == true);
|
||||
}
|
||||
|
||||
@@ -58,9 +58,9 @@ std::string getName(enum CalcKind CK) {
|
||||
case CK_##func: \
|
||||
return std::complex<FloatT>(func(A));
|
||||
|
||||
template <typename FloatT>
|
||||
__device__ __host__ std::complex<FloatT> calc(std::complex<FloatT> A, std::complex<FloatT> B,
|
||||
enum CalcKind CK) {
|
||||
template <typename FloatT> __device__ __host__ std::complex<FloatT> calc(std::complex<FloatT> A,
|
||||
std::complex<FloatT> B,
|
||||
enum CalcKind CK) {
|
||||
switch (CK) {
|
||||
case CK_add:
|
||||
return A + B;
|
||||
@@ -79,9 +79,8 @@ __device__ __host__ std::complex<FloatT> calc(std::complex<FloatT> A, std::compl
|
||||
return A; // To prevent compile warning
|
||||
}
|
||||
|
||||
template <typename FloatT>
|
||||
__global__ void kernel(std::complex<FloatT>* A, std::complex<FloatT>* B, std::complex<FloatT>* C,
|
||||
enum CalcKind CK) {
|
||||
template <typename FloatT> __global__ void kernel(std::complex<FloatT>* A, std::complex<FloatT>* B,
|
||||
std::complex<FloatT>* C, enum CalcKind CK) {
|
||||
int tx = threadIdx.x + blockIdx.x * blockDim.x;
|
||||
C[tx] = calc<FloatT>(A[tx], B[tx], CK);
|
||||
}
|
||||
|
||||
@@ -725,7 +725,7 @@ bool run_erfinvf() {
|
||||
TEST_CASE("Unit_hipDeviceTrigFunc_Float") {
|
||||
bool result = false;
|
||||
result = run_sincosf() && run_sincospif() && run_fdividef() && run_llrintf() && run_norm3df() &&
|
||||
run_norm4df() && run_normf() && run_rnorm3df() && run_rnorm4df() && run_rnormf() &&
|
||||
run_lroundf() && run_llroundf() && run_rintf() && run_rhypotf() && run_erfinvf();
|
||||
run_norm4df() && run_normf() && run_rnorm3df() && run_rnorm4df() && run_rnormf() &&
|
||||
run_lroundf() && run_llroundf() && run_rintf() && run_rhypotf() && run_erfinvf();
|
||||
REQUIRE(result == true);
|
||||
}
|
||||
|
||||
@@ -615,7 +615,7 @@ bool run_erfinv() {
|
||||
TEST_CASE("Unit_hipTrigDeviceFunc_Double") {
|
||||
bool result = false;
|
||||
result = run_sincos() && run_sincospi() && run_llrint() && run_norm3d() && run_norm4d() &&
|
||||
run_rnorm3d() && run_rnorm4d() && run_rnorm() && run_lround() && run_llround() &&
|
||||
run_rint() && run_rhypot() && run_erfinv();
|
||||
run_rnorm3d() && run_rnorm4d() && run_rnorm() && run_lround() && run_llround() &&
|
||||
run_rint() && run_rhypot() && run_erfinv();
|
||||
REQUIRE(result == true);
|
||||
}
|
||||
|
||||
@@ -324,12 +324,12 @@ __device__ bool check_rnorm4d(double* A) {
|
||||
|
||||
__device__ bool check_rnormf(float* A) {
|
||||
return (rnorm3df(A[0], A[1], A[2]) - rnormf(3, A) < 0.0001) &&
|
||||
(rnorm4df(A[0], A[1], A[2], A[3]) - rnormf(4, A) < 0.0001);
|
||||
(rnorm4df(A[0], A[1], A[2], A[3]) - rnormf(4, A) < 0.0001);
|
||||
}
|
||||
|
||||
__device__ bool check_rnorm(double* A) {
|
||||
return (rnorm3d(A[0], A[1], A[2]) - rnorm(3, A) < 0.0001) &&
|
||||
(rnorm4d(A[0], A[1], A[2], A[3]) - rnorm(4, A) < 0.0001);
|
||||
(rnorm4d(A[0], A[1], A[2], A[3]) - rnorm(4, A) < 0.0001);
|
||||
}
|
||||
|
||||
__device__ bool check_sincospif() {
|
||||
@@ -355,13 +355,13 @@ __device__ bool check_sincospi() {
|
||||
}
|
||||
__global__ void testFunctions(bool* result, float* Af, double* A) {
|
||||
result[0] &= check_erfcinvf() && check_erfcxf() && check_erfcinvf() && check_erfcinv() &&
|
||||
check_erfcx() && check_erfcinv() && check_fdividef() && check_fdivide() && check_modff() &&
|
||||
check_modf() && check_nextafterf() && check_norm3df(Af) && check_norm3d(A) &&
|
||||
check_norm4df(Af) && check_norm4d(A) && check_normcdff() && check_normcdf() &&
|
||||
check_normcdfinvf() && check_normcdfinv() && check_rcbrtf() && check_rcbrt() &&
|
||||
check_rhypotf() && check_rhypot() && check_rnorm3df(Af) && check_rnorm3d(A) &&
|
||||
check_rnorm4df(Af) && check_rnorm4d(A) && check_rnormf(Af) && check_rnorm(A) &&
|
||||
check_sincospif() && check_sincospi() && check_nextafter();
|
||||
check_erfcx() && check_erfcinv() && check_fdividef() && check_fdivide() &&
|
||||
check_modff() && check_modf() && check_nextafterf() && check_norm3df(Af) &&
|
||||
check_norm3d(A) && check_norm4df(Af) && check_norm4d(A) && check_normcdff() &&
|
||||
check_normcdf() && check_normcdfinvf() && check_normcdfinv() && check_rcbrtf() &&
|
||||
check_rcbrt() && check_rhypotf() && check_rhypot() && check_rnorm3df(Af) &&
|
||||
check_rnorm3d(A) && check_rnorm4df(Af) && check_rnorm4d(A) && check_rnormf(Af) &&
|
||||
check_rnorm(A) && check_sincospif() && check_sincospi() && check_nextafter();
|
||||
}
|
||||
|
||||
TEST_CASE("Unit_TestDevice_DoublePrecisionMathFunc") {
|
||||
|
||||
@@ -259,7 +259,7 @@ TEST_CASE("Unit_hipVectorTypes_test_on_device") {
|
||||
REQUIRE(res == hipSuccess);
|
||||
|
||||
passed = passed &&
|
||||
run_CheckSharedVectorTypes<
|
||||
run_CheckSharedVectorTypes<
|
||||
char1, char2, char3, char4, uchar1, uchar2, uchar3, uchar4, short1, short2, short3,
|
||||
short4, ushort1, ushort2, ushort3, ushort4, int1, int2, int3, int4, uint1, uint2,
|
||||
uint3, uint4, long1, long2, long3, long4, ulong1, ulong2, ulong3, ulong4, longlong1,
|
||||
|
||||
@@ -66,7 +66,7 @@ __global__ void vectoradd_char4(char4* a, const char4* bm, const char4* cm, int
|
||||
int i = y * width + x;
|
||||
if (i < (width * height)) {
|
||||
a[i] = make_char4(bm[i].x, bm[i].y, bm[i].z, bm[i].w) +
|
||||
make_char4(cm[i].x, cm[i].y, cm[i].z, cm[i].w);
|
||||
make_char4(cm[i].x, cm[i].y, cm[i].z, cm[i].w);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -315,7 +315,7 @@ TEST_CASE("Unit_Test_makechar_functionality") {
|
||||
bool errors;
|
||||
|
||||
errors = dataTypesRunChar1<char1>() && dataTypesRunChar2<char2>() && dataTypesRunChar3<char3>() &&
|
||||
dataTypesRunChar4<char4>();
|
||||
dataTypesRunChar4<char4>();
|
||||
|
||||
REQUIRE(errors == true);
|
||||
}
|
||||
|
||||
@@ -30,8 +30,7 @@ constexpr int NUM = WIDTH * HEIGHT;
|
||||
constexpr int THREADS_PER_BLOCK_X = 8;
|
||||
constexpr int THREADS_PER_BLOCK_Y = 8;
|
||||
|
||||
template <typename T>
|
||||
__global__ void vectoradd_float(T* a, const T* bm, int width, int height)
|
||||
template <typename T> __global__ void vectoradd_float(T* a, const T* bm, int width, int height)
|
||||
|
||||
{
|
||||
int x = blockDim.x * blockIdx.x + threadIdx.x;
|
||||
@@ -227,25 +226,26 @@ TEST_CASE("Unit_ldg") {
|
||||
int errors;
|
||||
|
||||
errors = dataTypesRun<char, char>() | dataTypesRun<short, short>() | dataTypesRun<int, int>() |
|
||||
dataTypesRun<long, long>() | dataTypesRun<long long, long long>() |
|
||||
dataTypesRun<signed char, signed char>() | dataTypesRun<unsigned char, unsigned char>() |
|
||||
dataTypesRun<unsigned short, unsigned short>() | dataTypesRun<unsigned int, unsigned int>() |
|
||||
dataTypesRun<unsigned long, unsigned long>() |
|
||||
dataTypesRun<unsigned long long, unsigned long long>() | dataTypesRun<float, float>() |
|
||||
dataTypesRun<double, double>();
|
||||
dataTypesRun<long, long>() | dataTypesRun<long long, long long>() |
|
||||
dataTypesRun<signed char, signed char>() | dataTypesRun<unsigned char, unsigned char>() |
|
||||
dataTypesRun<unsigned short, unsigned short>() |
|
||||
dataTypesRun<unsigned int, unsigned int>() |
|
||||
dataTypesRun<unsigned long, unsigned long>() |
|
||||
dataTypesRun<unsigned long long, unsigned long long>() | dataTypesRun<float, float>() |
|
||||
dataTypesRun<double, double>();
|
||||
|
||||
REQUIRE(errors == 0);
|
||||
|
||||
errors = dataTypesRun2<int2, int>() | dataTypesRun2<short2, short>() |
|
||||
dataTypesRun2<ushort2, unsigned short>() | dataTypesRun2<char2, signed char>() |
|
||||
dataTypesRun2<uchar2, unsigned char>() | dataTypesRun2<uint2, unsigned int>() |
|
||||
dataTypesRun2<float2, float>() | dataTypesRun2<double2, double>();
|
||||
dataTypesRun2<ushort2, unsigned short>() | dataTypesRun2<char2, signed char>() |
|
||||
dataTypesRun2<uchar2, unsigned char>() | dataTypesRun2<uint2, unsigned int>() |
|
||||
dataTypesRun2<float2, float>() | dataTypesRun2<double2, double>();
|
||||
|
||||
REQUIRE(errors == 0);
|
||||
|
||||
errors = dataTypesRun4<int4, int>() | dataTypesRun4<char4, signed char>() |
|
||||
dataTypesRun4<uchar4, unsigned char>() | dataTypesRun4<short4, short>() |
|
||||
dataTypesRun4<uint4, unsigned int>() | dataTypesRun4<float4, float>();
|
||||
dataTypesRun4<uchar4, unsigned char>() | dataTypesRun4<short4, short>() |
|
||||
dataTypesRun4<uint4, unsigned int>() | dataTypesRun4<float4, float>();
|
||||
|
||||
REQUIRE(errors == 0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user