mirror of
https://github.com/simdjson/simdjson
synced 2026-06-08 17:27:07 +00:00
This adds a little test to see if we can compiler with very strict flags (conventional casts) (#1417)
* This adds a little test to see if we can compiler with very strict flags. * Trimming a leftover old-style cast. * More cleaning. * A few more pedantic casts.
This commit is contained in:
@@ -24,6 +24,6 @@ jobs:
|
||||
run: |
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake -DSIMDJSON_GOOGLE_BENCHMARKS=ON -DSIMDJSON_BUILD_STATIC=ON -DCMAKE_INSTALL_PREFIX:PATH=destination .. &&
|
||||
cmake -DCMAKE_CXX_FLAGS="-Werror=old-style-cast -pedantic -Wpedantic" -DSIMDJSON_GOOGLE_BENCHMARKS=ON -DSIMDJSON_BUILD_STATIC=ON -DCMAKE_INSTALL_PREFIX:PATH=destination .. &&
|
||||
cmake --build . --target checkperf &&
|
||||
ctest --output-on-failure -R checkperf
|
||||
|
||||
@@ -321,7 +321,7 @@ struct benchmarker {
|
||||
allocate_stage << allocate_count;
|
||||
// Run it once to get hot buffers
|
||||
if(hotbuffers) {
|
||||
auto result = parser.parse((const uint8_t *)json.data(), json.size());
|
||||
auto result = parser.parse(reinterpret_cast<const uint8_t *>(json.data()), json.size());
|
||||
if (result.error()) {
|
||||
exit_error(string("Failed to parse ") + filename + string(":") + error_message(result.error()));
|
||||
}
|
||||
@@ -331,7 +331,7 @@ struct benchmarker {
|
||||
|
||||
// Stage 1 (find structurals)
|
||||
collector.start();
|
||||
error = parser.implementation->stage1((const uint8_t *)json.data(), json.size(), false);
|
||||
error = parser.implementation->stage1(reinterpret_cast<const uint8_t *>(json.data()), json.size(), false);
|
||||
event_count stage1_count = collector.end();
|
||||
stage1 << stage1_count;
|
||||
if (error) {
|
||||
@@ -367,7 +367,7 @@ struct benchmarker {
|
||||
|
||||
void run_loop(size_t iterations) {
|
||||
dom::parser parser;
|
||||
auto firstresult = parser.parse((const uint8_t *)json.data(), json.size());
|
||||
auto firstresult = parser.parse(reinterpret_cast<const uint8_t *>(json.data()), json.size());
|
||||
if (firstresult.error()) {
|
||||
exit_error(string("Failed to parse ") + filename + string(":") + error_message(firstresult.error()));
|
||||
}
|
||||
@@ -375,7 +375,7 @@ struct benchmarker {
|
||||
collector.start();
|
||||
// some users want something closer to "number of documents per second"
|
||||
for(size_t i = 0; i < iterations; i++) {
|
||||
auto result = parser.parse((const uint8_t *)json.data(), json.size());
|
||||
auto result = parser.parse(reinterpret_cast<const uint8_t *>(json.data()), json.size());
|
||||
if (result.error()) {
|
||||
exit_error(string("Failed to parse ") + filename + string(":") + error_message(result.error()));
|
||||
}
|
||||
@@ -446,7 +446,7 @@ struct benchmarker {
|
||||
|
||||
void print(bool tabbed_output) const {
|
||||
if (tabbed_output) {
|
||||
char* filename_copy = (char*)malloc(strlen(filename)+1);
|
||||
char* filename_copy = reinterpret_cast<char*>(malloc(strlen(filename)+1));
|
||||
SIMDJSON_PUSH_DISABLE_WARNINGS
|
||||
SIMDJSON_DISABLE_DEPRECATED_WARNING // Validated CRT_SECURE safe here
|
||||
strcpy(filename_copy, filename);
|
||||
|
||||
@@ -115,9 +115,9 @@ simdjson_really_inline int8x16_t make_int8x16_t(int8_t x1, int8_t x2, int8_t x
|
||||
simdjson_really_inline simd8<T> operator^(const simd8<T> other) const { return veorq_u8(*this, other); }
|
||||
simdjson_really_inline simd8<T> bit_andnot(const simd8<T> other) const { return vbicq_u8(*this, other); }
|
||||
simdjson_really_inline simd8<T> operator~() const { return *this ^ 0xFFu; }
|
||||
simdjson_really_inline simd8<T>& operator|=(const simd8<T> other) { auto this_cast = (simd8<T>*)this; *this_cast = *this_cast | other; return *this_cast; }
|
||||
simdjson_really_inline simd8<T>& operator&=(const simd8<T> other) { auto this_cast = (simd8<T>*)this; *this_cast = *this_cast & other; return *this_cast; }
|
||||
simdjson_really_inline simd8<T>& operator^=(const simd8<T> other) { auto this_cast = (simd8<T>*)this; *this_cast = *this_cast ^ other; return *this_cast; }
|
||||
simdjson_really_inline simd8<T>& operator|=(const simd8<T> other) { auto this_cast = static_cast<simd8<T>*>(this); *this_cast = *this_cast | other; return *this_cast; }
|
||||
simdjson_really_inline simd8<T>& operator&=(const simd8<T> other) { auto this_cast = static_cast<simd8<T>*>(this); *this_cast = *this_cast & other; return *this_cast; }
|
||||
simdjson_really_inline simd8<T>& operator^=(const simd8<T> other) { auto this_cast = static_cast<simd8<T>*>(this); *this_cast = *this_cast ^ other; return *this_cast; }
|
||||
|
||||
simdjson_really_inline Mask operator==(const simd8<T> other) const { return vceqq_u8(*this, other); }
|
||||
|
||||
@@ -284,9 +284,9 @@ simdjson_really_inline int8x16_t make_int8x16_t(int8_t x1, int8_t x2, int8_t x
|
||||
// only the first pop1 bytes from the first 8 bytes, and then
|
||||
// it fills in with the bytes from the second 8 bytes + some filling
|
||||
// at the end.
|
||||
uint8x16_t compactmask = vld1q_u8((const uint8_t *)(pshufb_combine_table + pop1 * 8));
|
||||
uint8x16_t compactmask = vld1q_u8(reinterpret_cast<const uint8_t *>(pshufb_combine_table + pop1 * 8));
|
||||
uint8x16_t answer = vqtbl1q_u8(pruned, compactmask);
|
||||
vst1q_u8((uint8_t*) output, answer);
|
||||
vst1q_u8(reinterpret_cast<uint8_t*>(output), answer);
|
||||
}
|
||||
|
||||
template<typename L>
|
||||
|
||||
@@ -127,7 +127,7 @@ simdjson_unused simdjson_warn_unused simdjson_really_inline error_code parse_str
|
||||
if (*(src++) != '"') { return STRING_ERROR; }
|
||||
auto end = stringparsing::parse_string(src, current_string_buf_loc);
|
||||
if (!end) { return STRING_ERROR; }
|
||||
s = std::string_view((const char *)current_string_buf_loc, end-current_string_buf_loc);
|
||||
s = std::string_view(reinterpret_cast<const char *>(current_string_buf_loc), end-current_string_buf_loc);
|
||||
current_string_buf_loc = end;
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -42,17 +42,17 @@ template <typename Child> struct base {
|
||||
return vec_andc(this->value, (__m128i)other);
|
||||
}
|
||||
simdjson_really_inline Child &operator|=(const Child other) {
|
||||
auto this_cast = (Child *)this;
|
||||
auto this_cast = static_cast<Child*>(this);
|
||||
*this_cast = *this_cast | other;
|
||||
return *this_cast;
|
||||
}
|
||||
simdjson_really_inline Child &operator&=(const Child other) {
|
||||
auto this_cast = (Child *)this;
|
||||
auto this_cast = static_cast<Child*>(this);
|
||||
*this_cast = *this_cast & other;
|
||||
return *this_cast;
|
||||
}
|
||||
simdjson_really_inline Child &operator^=(const Child other) {
|
||||
auto this_cast = (Child *)this;
|
||||
auto this_cast = static_cast<Child*>(this);
|
||||
*this_cast = *this_cast ^ other;
|
||||
return *this_cast;
|
||||
}
|
||||
@@ -131,7 +131,7 @@ template <typename T> struct base8_numeric : base8<T> {
|
||||
}
|
||||
static simdjson_really_inline simd8<T> zero() { return splat(0); }
|
||||
static simdjson_really_inline simd8<T> load(const T values[16]) {
|
||||
return (__m128i)(vec_vsx_ld(0, (const uint8_t *)values));
|
||||
return (__m128i)(vec_vsx_ld(0, reinterpret_cast<const uint8_t *>(values)));
|
||||
}
|
||||
// Repeat 16 values as many times as necessary (usually for lookup tables)
|
||||
static simdjson_really_inline simd8<T> repeat_16(T v0, T v1, T v2, T v3, T v4,
|
||||
@@ -163,11 +163,11 @@ template <typename T> struct base8_numeric : base8<T> {
|
||||
}
|
||||
simdjson_really_inline simd8<T> &operator+=(const simd8<T> other) {
|
||||
*this = *this + other;
|
||||
return *(simd8<T> *)this;
|
||||
return *static_cast<simd8<T> *>(this);
|
||||
}
|
||||
simdjson_really_inline simd8<T> &operator-=(const simd8<T> other) {
|
||||
*this = *this - other;
|
||||
return *(simd8<T> *)this;
|
||||
return *static_cast<simd8<T> *>(this);
|
||||
}
|
||||
|
||||
// Perform a lookup assuming the value is between 0 and 16 (undefined behavior
|
||||
@@ -217,9 +217,9 @@ template <typename T> struct base8_numeric : base8<T> {
|
||||
// it fills in with the bytes from the second 8 bytes + some filling
|
||||
// at the end.
|
||||
__m128i compactmask =
|
||||
vec_vsx_ld(0, (const uint8_t *)(pshufb_combine_table + pop1 * 8));
|
||||
vec_vsx_ld(0, reinterpret_cast<const uint8_t *>(pshufb_combine_table + pop1 * 8));
|
||||
__m128i answer = vec_perm(pruned, (__m128i)vec_splats(0), compactmask);
|
||||
vec_vsx_st(answer, 0, (__m128i *)(output));
|
||||
vec_vsx_st(answer, 0, reinterpret_cast<__m128i *>(output));
|
||||
}
|
||||
|
||||
template <typename L>
|
||||
|
||||
Reference in New Issue
Block a user