Fix gcc build

This commit is contained in:
2025-05-22 16:32:45 -04:00
parent 18748483b2
commit 41c8fcc30c
2 changed files with 19 additions and 6 deletions

View File

@@ -49,11 +49,20 @@ target_include_directories(mytest PRIVATE include)
target_link_libraries(mytest PRIVATE doctest nanobench simdjson) target_link_libraries(mytest PRIVATE doctest nanobench simdjson)
doctest_discover_tests(mytest) doctest_discover_tests(mytest)
include(CMakePushCheckState)
include(CheckCXXCompilerFlag)
cmake_push_check_state()
set(CMAKE_REQUIRED_LINK_OPTIONS -fsanitize=fuzzer-no-link)
check_cxx_compiler_flag(-fsanitize=fuzzer-no-link HAS_LIB_FUZZER)
cmake_pop_check_state()
if(HAS_LIB_FUZZER)
add_executable(fuzz src/fuzz.cpp) add_executable(fuzz src/fuzz.cpp)
target_include_directories(fuzz PRIVATE include) target_include_directories(fuzz PRIVATE include)
target_link_libraries(fuzz PRIVATE simdjson) target_link_libraries(fuzz PRIVATE simdjson)
target_compile_options(fuzz PRIVATE -fsanitize=fuzzer) target_compile_options(fuzz PRIVATE -fsanitize=fuzzer)
target_link_options(fuzz PRIVATE -fsanitize=fuzzer) target_link_options(fuzz PRIVATE -fsanitize=fuzzer)
endif()
add_executable(validate src/validate.cpp) add_executable(validate src/validate.cpp)
target_include_directories(validate PRIVATE include) target_include_directories(validate PRIVATE include)

View File

@@ -414,7 +414,7 @@ inline WeaselJsonStatus n_string2(Parser3 *self) {
} }
break; break;
} }
__m128 x; __m128i x;
memcpy(&x, self->buf, 16); memcpy(&x, self->buf, 16);
const uint32_t dubquote = const uint32_t dubquote =
_mm_movemask_epi8(_mm_cmpeq_epi8(_mm_set1_epi8('"'), x)); _mm_movemask_epi8(_mm_cmpeq_epi8(_mm_set1_epi8('"'), x));
@@ -493,6 +493,8 @@ inline WeaselJsonStatus n_string2(Parser3 *self) {
case Tables::CONTINUATION_BYTE: case Tables::CONTINUATION_BYTE:
case Tables::INVALID: case Tables::INVALID:
[[unlikely]] return WeaselJson_REJECT; [[unlikely]] return WeaselJson_REJECT;
default:
__builtin_unreachable();
} }
} }
@@ -1085,6 +1087,8 @@ inline WeaselJsonStatus Parser3::keepGoing(Parser3 *self) {
case T_EOF: case T_EOF:
case N_SYMBOL_COUNT: case N_SYMBOL_COUNT:
break; break;
default:
__builtin_unreachable();
} }
return WeaselJson_AGAIN; return WeaselJson_AGAIN;
} }