Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package vectorscan for openSUSE:Factory checked in at 2023-04-07 18:17:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/vectorscan (Old) and /work/SRC/openSUSE:Factory/.vectorscan.new.19717 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "vectorscan" Fri Apr 7 18:17:07 2023 rev:5 rq:1077845 version:5.4.9 Changes: -------- --- /work/SRC/openSUSE:Factory/vectorscan/vectorscan.changes 2022-11-04 17:36:27.965280994 +0100 +++ /work/SRC/openSUSE:Factory/.vectorscan.new.19717/vectorscan.changes 2023-04-07 18:17:16.256871913 +0200 @@ -1,0 +2,14 @@ +Thu Apr 6 10:18:17 UTC 2023 - Guillaume GARDET <guillaume.gar...@opensuse.org> + +- Update to 5.4.9: + * Major change: Enable SVE & SVE2 builds and make it a + supported architecture! (thanks to @abondarev84) + * Fix various clang-related bugs + * Fix Aarch64 bug in Parser.rl because of char signedness. + Make unsigned char the default in the Parser for all architectures. + * Fix Power bug, multiple tests were failing. + * C++20 related change, use prefixed assume_aligned to avoid + conflict with C++20 std::assume_aligned. + + +------------------------------------------------------------------- Old: ---- vectorscan-5.4.8.tar.gz New: ---- vectorscan-5.4.9.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ vectorscan.spec ++++++ --- /var/tmp/diff_new_pack.oOOwsQ/_old 2023-04-07 18:17:16.780874931 +0200 +++ /var/tmp/diff_new_pack.oOOwsQ/_new 2023-04-07 18:17:16.784874954 +0200 @@ -1,7 +1,7 @@ # # spec file for package vectorscan # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -21,7 +21,7 @@ %define so_suffix -vectorscan Name: vectorscan -Version: 5.4.8 +Version: 5.4.9 Release: 0 Summary: Regular expression matching library License: BSD-3-Clause ++++++ vectorscan-5.4.8.tar.gz -> vectorscan-5.4.9.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vectorscan-vectorscan-5.4.8/CMakeLists.txt new/vectorscan-vectorscan-5.4.9/CMakeLists.txt --- old/vectorscan-vectorscan-5.4.8/CMakeLists.txt 2022-09-13 14:57:08.000000000 +0200 +++ new/vectorscan-vectorscan-5.4.9/CMakeLists.txt 2023-03-23 15:11:37.000000000 +0100 @@ -1,9 +1,10 @@ -cmake_minimum_required (VERSION 2.8.11) +cmake_minimum_required (VERSION 2.8.12) + project (vectorscan C CXX) set (HS_MAJOR_VERSION 5) set (HS_MINOR_VERSION 4) -set (HS_PATCH_VERSION 8) +set (HS_PATCH_VERSION 9) set (HS_VERSION ${HS_MAJOR_VERSION}.${HS_MINOR_VERSION}.${HS_PATCH_VERSION}) set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) @@ -165,27 +166,49 @@ # cpuid info and then chooses the best microarch it can (and replaces # the flag), so use that for tune. + set(TUNE_FLAG "mtune") + set(GNUCC_TUNE "") + message(STATUS "ARCH_FLAG '${ARCH_FLAG}' '${GNUCC_ARCH}', TUNE_FLAG '${TUNE_FLAG}' '${GNUCC_TUNE}' ") + # arg1 might exist if using ccache string (STRIP "${CMAKE_C_COMPILER_ARG1}" CC_ARG1) - set (EXEC_ARGS ${CC_ARG1} -c -Q --help=target -${ARCH_FLAG}=native -mtune=native) + set (EXEC_ARGS ${CC_ARG1} -c -Q --help=target -${ARCH_FLAG}=native -${TUNE_FLAG}=native) execute_process(COMMAND ${CMAKE_C_COMPILER} ${EXEC_ARGS} OUTPUT_VARIABLE _GCC_OUTPUT) - string(FIND "${_GCC_OUTPUT}" "${ARCH_FLAG}" POS) + set(_GCC_OUTPUT_TUNE ${_GCC_OUTPUT}) + string(FIND "${_GCC_OUTPUT}" "${ARCH_FLAG}=" POS) string(SUBSTRING "${_GCC_OUTPUT}" ${POS} -1 _GCC_OUTPUT) string(REGEX REPLACE "${ARCH_FLAG}=[ \t]*([^ \n]*)[ \n].*" "\\1" GNUCC_ARCH "${_GCC_OUTPUT}") + string(FIND "${_GCC_OUTPUT_TUNE}" "${TUNE_FLAG}=" POS_TUNE) + string(SUBSTRING "${_GCC_OUTPUT_TUNE}" ${POS_TUNE} -1 _GCC_OUTPUT_TUNE) + string(REGEX REPLACE "${TUNE_FLAG}=[ \t]*([^ \n]*)[ \n].*" "\\1" GNUCC_TUNE "${_GCC_OUTPUT_TUNE}") + + string(FIND "${GNUCC_ARCH}" "sve" POS_SVE) + string(FIND "${GNUCC_ARCH}" "sve2" POS_SVE2) + string(FIND "${GNUCC_ARCH}" "sve2-bitperm" POS_SVE2_BITPERM) + if (NOT POS_SVE EQUAL 0) + set(SVE_FOUND 1) + elseif(NOT POS_SVE2 EQUAL 0) + set(SVE2_FOUND 1) + elseif(NOT POS_SVE2_BITPERM EQUAL 0) + set(SVE2_BITPERM_FOUND 1) + endif() + + message(STATUS "ARCH_FLAG '${ARCH_FLAG}' '${GNUCC_ARCH}', TUNE_FLAG '${TUNE_FLAG}' '${GNUCC_TUNE}' ") + # test the parsed flag - set (EXEC_ARGS ${CC_ARG1} -E - -mtune=${GNUCC_ARCH}) + set (EXEC_ARGS ${CC_ARG1} -E - -${ARCH_FLAG}=${GNUCC_ARCH} -${TUNE_FLAG}=${GNUCC_TUNE}) execute_process(COMMAND ${CMAKE_C_COMPILER} ${EXEC_ARGS} OUTPUT_QUIET ERROR_QUIET INPUT_FILE /dev/null RESULT_VARIABLE GNUCC_TUNE_TEST) if (NOT GNUCC_TUNE_TEST EQUAL 0) - message(WARNING "Something went wrong determining gcc tune: -mtune=${GNUCC_ARCH} not valid, falling back to -mtune=native") - set(TUNE_FLAG native) + message(WARNING "Something went wrong determining gcc tune: -mtune=${GNUCC_TUNE} not valid, falling back to -mtune=native") + set(GNUCC_TUNE native) else() - set(TUNE_FLAG ${GNUCC_ARCH}) - message(STATUS "gcc will tune for ${GNUCC_ARCH}, ${TUNE_FLAG}") + set(GNUCC_TUNE ${GNUCC_TUNE}) + message(STATUS "gcc will tune for ${GNUCC_ARCH}, ${GNUCC_TUNE}") endif() elseif (CMAKE_COMPILER_IS_CLANG AND NOT CROSS_COMPILE) if (ARCH_IA32 OR ARCH_X86_64) @@ -226,22 +249,26 @@ endif() if (ARCH_AARCH64) - if (BUILD_SVE2_BITPERM) + if (BUILD_SVE2_BITPERM AND NOT SVE2_BITPERM_FOUND) set(GNUCC_ARCH "${GNUCC_ARCH}+sve2-bitperm") - elseif (BUILD_SVE2) + elseif (BUILD_SVE2 AND NOT SVE2_FOUND) set(GNUCC_ARCH "${GNUCC_ARCH}+sve2") - elseif (BUILD_SVE) + elseif (BUILD_SVE AND NOT SVE_FOUND) set(GNUCC_ARCH "${GNUCC_ARCH}+sve") endif () endif(ARCH_AARCH64) - message(STATUS "ARCH_C_FLAGS : ${ARCH_C_FLAGS}") message(STATUS "ARCH_CXX_FLAGS : ${ARCH_CXX_FLAGS}") if (NOT FAT_RUNTIME) - set(ARCH_C_FLAGS "-${ARCH_FLAG}=${GNUCC_ARCH} -mtune=${TUNE_FLAG} ${ARCH_C_FLAGS}") - set(ARCH_CXX_FLAGS "-${ARCH_FLAG}=${GNUCC_ARCH} -mtune=${TUNE_FLAG} ${ARCH_CXX_FLAGS}") + if (GNUCC_TUNE) + set(ARCH_C_FLAGS "-${ARCH_FLAG}=${GNUCC_ARCH} -${TUNE_FLAG}=${GNUCC_TUNE}") + set(ARCH_CXX_FLAGS "-${ARCH_FLAG}=${GNUCC_ARCH} -${TUNE_FLAG}=${GNUCC_TUNE}") + else() + set(ARCH_C_FLAGS "-${ARCH_FLAG}=${GNUCC_ARCH} -mtune=${TUNE_FLAG} ${ARCH_C_FLAGS}") + set(ARCH_CXX_FLAGS "-${ARCH_FLAG}=${GNUCC_ARCH} -mtune=${TUNE_FLAG} ${ARCH_CXX_FLAGS}") + endif() endif() #if (ARCH_IA32 OR ARCH_X86_64 OR ARCH_ARM32 OR ARCH_AARCH64) @@ -296,6 +323,12 @@ # release builds set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Werror") set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Werror") + if (CMAKE_COMPILER_IS_CLANG) + if (CMAKE_C_COMPILER_VERSION VERSION_GREATER "13.0") + set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-unused-but-set-variable") + set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-unused-but-set-variable") + endif() + endif() endif() if (DISABLE_ASSERTS) @@ -332,6 +365,7 @@ elseif (ARCH_ARM32 OR ARCH_AARCH64) CHECK_INCLUDE_FILE_CXX(arm_neon.h HAVE_C_ARM_NEON_H) if (BUILD_SVE OR BUILD_SVE2 OR BUILD_SVE2_BITPERM) + set(CMAKE_REQUIRED_FLAGS ${ARCH_CXX_FLAGS}) CHECK_INCLUDE_FILE_CXX(arm_sve.h HAVE_C_ARM_SVE_H) if (NOT HAVE_C_ARM_SVE_H) message(FATAL_ERROR "arm_sve.h is required to build for SVE.") @@ -510,7 +544,6 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${ARCH_C_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ARCH_CXX_FLAGS}") -add_subdirectory(util) add_subdirectory(doc/dev-reference) # PCRE check, we have a fixed requirement for PCRE to use Chimera @@ -554,7 +587,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CXX_FLAGS}") endif() -set(RAGEL_C_FLAGS "-Wno-unused") +set(RAGEL_C_FLAGS "-Wno-unused -funsigned-char") set_source_files_properties( ${CMAKE_BINARY_DIR}/src/parser/Parser.cpp @@ -570,6 +603,8 @@ ragelmaker(src/parser/control_verbs.rl) +add_subdirectory(util) + SET(hs_HEADERS src/hs.h src/hs_common.h diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vectorscan-vectorscan-5.4.8/Jenkinsfile new/vectorscan-vectorscan-5.4.9/Jenkinsfile --- old/vectorscan-vectorscan-5.4.8/Jenkinsfile 2022-09-13 14:57:08.000000000 +0200 +++ new/vectorscan-vectorscan-5.4.9/Jenkinsfile 2023-03-23 15:11:37.000000000 +0100 @@ -303,8 +303,12 @@ } } stage("Build") { + environment { + CC="clang" + CXX="clang++" + } steps { - cmakeBuild buildDir: 'build-clang-release-SSE', buildType: 'Release', cleanBuild: true, cmakeArgs: '-DBUILD_AVX2=no -DBUILD_AVX512=no -DFAT_RUNTIME=no', installation: 'InSearchPath', steps: [[envVars: 'CC=clang CXX=clang++', args: '--parallel 4', withCmake: true]] + cmakeBuild buildDir: 'build-clang-release-SSE', buildType: 'Release', cleanBuild: true, cmakeArgs: '-DBUILD_AVX2=no -DBUILD_AVX512=no -DFAT_RUNTIME=no', installation: 'InSearchPath', steps: [[args: '--parallel 4', withCmake: true]] } } stage("Unit Test") { @@ -328,8 +332,12 @@ } } stage("Build") { + environment { + CC="clang" + CXX="clang++" + } steps { - cmakeBuild buildDir: 'build-clang-release-AVX2', buildType: 'Release', cleanBuild: true, cmakeArgs: '-DBUILD_AVX2=yes -DBUILD_AVX512=no -DFAT_RUNTIME=no', installation: 'InSearchPath', steps: [[envVars: 'CC=clang CXX=clang++', args: '--parallel 4', withCmake: true]] + cmakeBuild buildDir: 'build-clang-release-AVX2', buildType: 'Release', cleanBuild: true, cmakeArgs: '-DBUILD_AVX2=yes -DBUILD_AVX512=no -DFAT_RUNTIME=no', installation: 'InSearchPath', steps: [[args: '--parallel 4', withCmake: true]] } } stage("Unit Test") { @@ -353,8 +361,12 @@ } } stage("Build") { + environment { + CC="clang" + CXX="clang++" + } steps { - cmakeBuild buildDir: 'build-clang-release-AVX512', buildType: 'Release', cleanBuild: true, cmakeArgs: '-DBUILD_AVX2=yes -DBUILD_AVX512=yes -DFAT_RUNTIME=no', installation: 'InSearchPath', steps: [[envVars: 'CC=clang CXX=clang++', args: '--parallel 4', withCmake: true]] + cmakeBuild buildDir: 'build-clang-release-AVX512', buildType: 'Release', cleanBuild: true, cmakeArgs: '-DBUILD_AVX2=yes -DBUILD_AVX512=yes -DFAT_RUNTIME=no', installation: 'InSearchPath', steps: [[args: '--parallel 4', withCmake: true]] } } stage("Unit Test") { @@ -378,8 +390,12 @@ } } stage("Build") { + environment { + CC="clang" + CXX="clang++" + } steps { - cmakeBuild buildDir: 'build-clang-release-fat', buildType: 'Release', cleanBuild: true, cmakeArgs: '-DBUILD_AVX2=yes -DBUILD_AVX512=yes -DFAT_RUNTIME=yes', installation: 'InSearchPath', steps: [[envVars: 'CC=clang CXX=clang++', args: '--parallel 4', withCmake: true]] + cmakeBuild buildDir: 'build-clang-release-fat', buildType: 'Release', cleanBuild: true, cmakeArgs: '-DBUILD_AVX2=yes -DBUILD_AVX512=yes -DFAT_RUNTIME=yes', installation: 'InSearchPath', steps: [[args: '--parallel 4', withCmake: true]] } } stage("Test") { @@ -398,8 +414,12 @@ } } stage("Build") { + environment { + CC="clang" + CXX="clang++" + } steps { - cmakeBuild buildDir: 'build-clang-debug-SSE', buildType: 'Debug', cleanBuild: true, cmakeArgs: '-DBUILD_AVX2=no -DBUILD_AVX512=no -DFAT_RUNTIME=no', installation: 'InSearchPath', steps: [[envVars: 'CC=clang CXX=clang++', args: '--parallel 4', withCmake: true]] + cmakeBuild buildDir: 'build-clang-debug-SSE', buildType: 'Debug', cleanBuild: true, cmakeArgs: '-DBUILD_AVX2=no -DBUILD_AVX512=no -DFAT_RUNTIME=no', installation: 'InSearchPath', steps: [[args: '--parallel 4', withCmake: true]] } } stage("Unit Test") { @@ -423,8 +443,12 @@ } } stage("Build") { + environment { + CC="clang" + CXX="clang++" + } steps { - cmakeBuild buildDir: 'build-clang-debug-AVX2', buildType: 'Debug', cleanBuild: true, cmakeArgs: '-DBUILD_AVX2=yes -DBUILD_AVX512=no -DFAT_RUNTIME=no', installation: 'InSearchPath', steps: [[envVars: 'CC=clang CXX=clang++', args: '--parallel 4', withCmake: true]] + cmakeBuild buildDir: 'build-clang-debug-AVX2', buildType: 'Debug', cleanBuild: true, cmakeArgs: '-DBUILD_AVX2=yes -DBUILD_AVX512=no -DFAT_RUNTIME=no', installation: 'InSearchPath', steps: [[args: '--parallel 4', withCmake: true]] } } stage("Unit Test") { @@ -448,8 +472,12 @@ } } stage("Build") { + environment { + CC="clang" + CXX="clang++" + } steps { - cmakeBuild buildDir: 'build-clang-debug-AVX512', buildType: 'Debug', cleanBuild: true, cmakeArgs: '-DBUILD_AVX2=yes -DBUILD_AVX512=yes -DFAT_RUNTIME=no', installation: 'InSearchPath', steps: [[envVars: 'CC=clang CXX=clang++', args: '--parallel 4', withCmake: true]] + cmakeBuild buildDir: 'build-clang-debug-AVX512', buildType: 'Debug', cleanBuild: true, cmakeArgs: '-DBUILD_AVX2=yes -DBUILD_AVX512=yes -DFAT_RUNTIME=no', installation: 'InSearchPath', steps: [[args: '--parallel 4', withCmake: true]] } } stage("Unit Test") { @@ -473,8 +501,12 @@ } } stage("Build") { + environment { + CC="clang" + CXX="clang++" + } steps { - cmakeBuild buildDir: 'build-clang-debug-fat', buildType: 'Debug', cleanBuild: true, cmakeArgs: '-DBUILD_AVX2=yes -DBUILD_AVX512=yes -DFAT_RUNTIME=yes', installation: 'InSearchPath', steps: [[envVars: 'CC=clang CXX=clang++', args: '--parallel 4', withCmake: true]] + cmakeBuild buildDir: 'build-clang-debug-fat', buildType: 'Debug', cleanBuild: true, cmakeArgs: '-DBUILD_AVX2=yes -DBUILD_AVX512=yes -DFAT_RUNTIME=yes', installation: 'InSearchPath', steps: [[args: '--parallel 4', withCmake: true]] } } stage("Test") { @@ -493,8 +525,12 @@ } } stage("Build") { + environment { + CC="clang" + CXX="clang++" + } steps { - cmakeBuild buildDir: 'build-clang-release-arm', buildType: 'Release', cleanBuild: true, cmakeArgs: '', installation: 'InSearchPath', steps: [[envVars: 'CC=clang CXX=clang++', args: '--parallel 4', withCmake: true]] + cmakeBuild buildDir: 'build-clang-release-arm', buildType: 'Release', cleanBuild: true, cmakeArgs: '', installation: 'InSearchPath', steps: [[args: '--parallel 4', withCmake: true]] } } stage("Unit Test") { @@ -518,8 +554,12 @@ } } stage("Build") { + environment { + CC="clang" + CXX="clang++" + } steps { - cmakeBuild buildDir: 'build-clang-debug-arm', buildType: 'Debug', cleanBuild: true, cmakeArgs: '', installation: 'InSearchPath', steps: [[envVars: 'CC=clang CXX=clang++', args: '--parallel 4', withCmake: true]] + cmakeBuild buildDir: 'build-clang-debug-arm', buildType: 'Debug', cleanBuild: true, cmakeArgs: '', installation: 'InSearchPath', steps: [[args: '--parallel 4', withCmake: true]] } } stage("Unit Test") { @@ -543,8 +583,12 @@ } } stage("Build") { + environment { + CC="clang" + CXX="clang++" + } steps { - cmakeBuild buildDir: 'build-clang-release-power', buildType: 'Release', cleanBuild: true, cmakeArgs: '', installation: 'InSearchPath', steps: [[envVars: 'CC=clang CXX=clang++', args: '--parallel 4', withCmake: true]] + cmakeBuild buildDir: 'build-clang-release-power', buildType: 'Release', cleanBuild: true, cmakeArgs: '', installation: 'InSearchPath', steps: [[args: '--parallel 4', withCmake: true]] } } stage("Unit Test") { @@ -568,8 +612,12 @@ } } stage("Build") { + environment { + CC="clang" + CXX="clang++" + } steps { - cmakeBuild buildDir: 'build-clang-debug-power', buildType: 'Debug', cleanBuild: true, cmakeArgs: '', installation: 'InSearchPath', steps: [[envVars: 'CC=clang CXX=clang++', args: '--parallel 4', withCmake: true]] + cmakeBuild buildDir: 'build-clang-debug-power', buildType: 'Debug', cleanBuild: true, cmakeArgs: '', installation: 'InSearchPath', steps: [[args: '--parallel 4', withCmake: true]] } } stage("Unit Test") { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vectorscan-vectorscan-5.4.8/cmake/ragel.cmake new/vectorscan-vectorscan-5.4.9/cmake/ragel.cmake --- old/vectorscan-vectorscan-5.4.8/cmake/ragel.cmake 2022-09-13 14:57:08.000000000 +0200 +++ new/vectorscan-vectorscan-5.4.9/cmake/ragel.cmake 2023-03-23 15:11:37.000000000 +0100 @@ -7,7 +7,7 @@ add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${src_dir}/${src_file}.cpp COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${src_dir} - COMMAND ${RAGEL} ${CMAKE_CURRENT_SOURCE_DIR}/${src_rl} -o ${rl_out} + COMMAND ${RAGEL} ${CMAKE_CURRENT_SOURCE_DIR}/${src_rl} -o ${rl_out} -G0 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${src_rl} ) add_custom_target(ragel_${src_file} DEPENDS ${rl_out}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vectorscan-vectorscan-5.4.8/src/fdr/teddy_runtime_common.h new/vectorscan-vectorscan-5.4.9/src/fdr/teddy_runtime_common.h --- old/vectorscan-vectorscan-5.4.8/src/fdr/teddy_runtime_common.h 2022-09-13 14:57:08.000000000 +0200 +++ new/vectorscan-vectorscan-5.4.9/src/fdr/teddy_runtime_common.h 2023-03-23 15:11:37.000000000 +0100 @@ -348,7 +348,7 @@ m512 vectoredLoad512(m512 *p_mask, const u8 *ptr, const size_t start_offset, const u8 *lo, const u8 *hi, const u8 *hbuf, size_t hlen, const u32 nMasks) { - m512 val; + m512 val = zeroes512(); uintptr_t copy_start; uintptr_t copy_len; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vectorscan-vectorscan-5.4.8/src/hs.h new/vectorscan-vectorscan-5.4.9/src/hs.h --- old/vectorscan-vectorscan-5.4.8/src/hs.h 2022-09-13 14:57:08.000000000 +0200 +++ new/vectorscan-vectorscan-5.4.9/src/hs.h 2023-03-23 15:11:37.000000000 +0100 @@ -43,7 +43,7 @@ #define HS_MAJOR 5 #define HS_MINOR 4 -#define HS_PATCH 0 +#define HS_PATCH 9 #include "hs_compile.h" #include "hs_runtime.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vectorscan-vectorscan-5.4.8/src/nfa/mcclellancompile.cpp new/vectorscan-vectorscan-5.4.9/src/nfa/mcclellancompile.cpp --- old/vectorscan-vectorscan-5.4.8/src/nfa/mcclellancompile.cpp 2022-09-13 14:57:08.000000000 +0200 +++ new/vectorscan-vectorscan-5.4.9/src/nfa/mcclellancompile.cpp 2023-03-23 15:11:37.000000000 +0100 @@ -1484,12 +1484,12 @@ find_wide_state(info); } - u16 total_daddy = 0; bool any_cyclic_near_anchored_state = is_cyclic_near(raw, raw.start_anchored); // Sherman optimization if (info.impl_alpha_size > 16) { + u16 total_daddy = 0; for (u32 i = 0; i < info.size(); i++) { if (info.is_widestate(i)) { continue; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vectorscan-vectorscan-5.4.8/src/nfagraph/ng_misc_opt.cpp new/vectorscan-vectorscan-5.4.9/src/nfagraph/ng_misc_opt.cpp --- old/vectorscan-vectorscan-5.4.8/src/nfagraph/ng_misc_opt.cpp 2022-09-13 14:57:08.000000000 +0200 +++ new/vectorscan-vectorscan-5.4.9/src/nfagraph/ng_misc_opt.cpp 2023-03-23 15:11:37.000000000 +0100 @@ -385,8 +385,7 @@ const vector<NFAVertex> ordering = getTopoOrdering(g); - return enlargeCyclicCR(g, som, ordering) - | enlargeCyclicCR_rev(g, ordering); + return enlargeCyclicCR(g, som, ordering) || enlargeCyclicCR_rev(g, ordering); } /** finds a smaller reachability for a state by the reverse transformation of diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vectorscan-vectorscan-5.4.8/src/parser/Parser.rl new/vectorscan-vectorscan-5.4.9/src/parser/Parser.rl --- old/vectorscan-vectorscan-5.4.8/src/parser/Parser.rl 2022-09-13 14:57:08.000000000 +0200 +++ new/vectorscan-vectorscan-5.4.9/src/parser/Parser.rl 2023-03-23 15:11:37.000000000 +0100 @@ -272,6 +272,7 @@ %%{ machine regex; + alphtype unsigned char; action throwUnsupportedEscape { ostringstream str; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vectorscan-vectorscan-5.4.8/src/parser/control_verbs.rl new/vectorscan-vectorscan-5.4.9/src/parser/control_verbs.rl --- old/vectorscan-vectorscan-5.4.8/src/parser/control_verbs.rl 2022-09-13 14:57:08.000000000 +0200 +++ new/vectorscan-vectorscan-5.4.9/src/parser/control_verbs.rl 2023-03-23 15:11:37.000000000 +0100 @@ -54,6 +54,7 @@ %%{ machine ControlVerbs; + alphtype unsigned char; # Verbs that we recognise but do not support. unhandledVerbs = '(*' ( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vectorscan-vectorscan-5.4.8/src/rose/rose_build_add.cpp new/vectorscan-vectorscan-5.4.9/src/rose/rose_build_add.cpp --- old/vectorscan-vectorscan-5.4.8/src/rose/rose_build_add.cpp 2022-09-13 14:57:08.000000000 +0200 +++ new/vectorscan-vectorscan-5.4.9/src/rose/rose_build_add.cpp 2023-03-23 15:11:37.000000000 +0100 @@ -216,9 +216,9 @@ const bool fixed_offset_src = g[u].fixedOffset(); const bool has_bounds = g[e].minBound || (g[e].maxBound != ROSE_BOUND_INF); - DEBUG_PRINTF("edge %zu->%zu, bounds=[%u,%u], fixed_u=%d, prefix=%d\n", + /*DEBUG_PRINTF("edge %zu->%zu, bounds=[%u,%u], fixed_u=%d, prefix=%d\n", g[u].index, g[v].index, g[e].minBound, g[e].maxBound, - (int)g[u].fixedOffset(), (int)g[v].left); + (int)g[u].fixedOffset(), (int)g[v].left);*/ if (g[v].left) { // Roles with prefix engines have their history handled by that prefix. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vectorscan-vectorscan-5.4.8/src/util/arch/common/simd_utils.h new/vectorscan-vectorscan-5.4.9/src/util/arch/common/simd_utils.h --- old/vectorscan-vectorscan-5.4.8/src/util/arch/common/simd_utils.h 2022-09-13 14:57:08.000000000 +0200 +++ new/vectorscan-vectorscan-5.4.9/src/util/arch/common/simd_utils.h 2023-03-23 15:11:37.000000000 +0100 @@ -254,7 +254,7 @@ // aligned store static really_inline void store256(void *ptr, m256 a) { assert(ISALIGNED_N(ptr, alignof(m256))); - ptr = assume_aligned(ptr, 16); + ptr = vectorscan_assume_aligned(ptr, 16); *(m256 *)ptr = a; } @@ -486,7 +486,7 @@ // aligned store static really_inline void store384(void *ptr, m384 a) { assert(ISALIGNED_16(ptr)); - ptr = assume_aligned(ptr, 16); + ptr = vectorscan_assume_aligned(ptr, 16); *(m384 *)ptr = a; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vectorscan-vectorscan-5.4.8/src/util/arch/ppc64el/simd_utils.h new/vectorscan-vectorscan-5.4.9/src/util/arch/ppc64el/simd_utils.h --- old/vectorscan-vectorscan-5.4.8/src/util/arch/ppc64el/simd_utils.h 2022-09-13 14:57:08.000000000 +0200 +++ new/vectorscan-vectorscan-5.4.9/src/util/arch/ppc64el/simd_utils.h 2023-03-23 15:11:37.000000000 +0100 @@ -152,7 +152,7 @@ static uint8x16_t perm = { 16, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; uint8x16_t bitmask = vec_gb((uint8x16_t) a); bitmask = (uint8x16_t) vec_perm(vec_splat_u8(0), bitmask, perm); - u32 movemask; + u32 ALIGN_ATTR(16) movemask; vec_ste((uint32x4_t) bitmask, 0, &movemask); return movemask; } @@ -285,27 +285,27 @@ return a; } -#define CASE_ALIGN_VECTORS(a, b, offset) case offset: return (m128)vec_sld((int8x16_t)(b), (int8x16_t)(a), (16 - offset)); break; +#define CASE_ALIGN_VECTORS(a, b, offset) case offset: return (m128)vec_sld((int8x16_t)(a), (int8x16_t)(b), (16 - offset)); break; static really_really_inline m128 palignr_imm(m128 r, m128 l, int offset) { switch (offset) { case 0: return l; break; - CASE_ALIGN_VECTORS(l, r, 1); - CASE_ALIGN_VECTORS(l, r, 2); - CASE_ALIGN_VECTORS(l, r, 3); - CASE_ALIGN_VECTORS(l, r, 4); - CASE_ALIGN_VECTORS(l, r, 5); - CASE_ALIGN_VECTORS(l, r, 6); - CASE_ALIGN_VECTORS(l, r, 7); - CASE_ALIGN_VECTORS(l, r, 8); - CASE_ALIGN_VECTORS(l, r, 9); - CASE_ALIGN_VECTORS(l, r, 10); - CASE_ALIGN_VECTORS(l, r, 11); - CASE_ALIGN_VECTORS(l, r, 12); - CASE_ALIGN_VECTORS(l, r, 13); - CASE_ALIGN_VECTORS(l, r, 14); - CASE_ALIGN_VECTORS(l, r, 15); + CASE_ALIGN_VECTORS(r, l, 1); + CASE_ALIGN_VECTORS(r, l, 2); + CASE_ALIGN_VECTORS(r, l, 3); + CASE_ALIGN_VECTORS(r, l, 4); + CASE_ALIGN_VECTORS(r, l, 5); + CASE_ALIGN_VECTORS(r, l, 6); + CASE_ALIGN_VECTORS(r, l, 7); + CASE_ALIGN_VECTORS(r, l, 8); + CASE_ALIGN_VECTORS(r, l, 9); + CASE_ALIGN_VECTORS(r, l, 10); + CASE_ALIGN_VECTORS(r, l, 11); + CASE_ALIGN_VECTORS(r, l, 12); + CASE_ALIGN_VECTORS(r, l, 13); + CASE_ALIGN_VECTORS(r, l, 14); + CASE_ALIGN_VECTORS(r, l, 15); case 16: return r; break; default: return zeroes128(); break; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vectorscan-vectorscan-5.4.8/src/util/arch/x86/simd_utils.h new/vectorscan-vectorscan-5.4.9/src/util/arch/x86/simd_utils.h --- old/vectorscan-vectorscan-5.4.8/src/util/arch/x86/simd_utils.h 2022-09-13 14:57:08.000000000 +0200 +++ new/vectorscan-vectorscan-5.4.9/src/util/arch/x86/simd_utils.h 2023-03-23 15:11:37.000000000 +0100 @@ -278,14 +278,14 @@ // aligned load static really_inline m128 load128(const void *ptr) { assert(ISALIGNED_N(ptr, alignof(m128))); - ptr = assume_aligned(ptr, 16); + ptr = vectorscan_assume_aligned(ptr, 16); return _mm_load_si128((const m128 *)ptr); } // aligned store static really_inline void store128(void *ptr, m128 a) { assert(ISALIGNED_N(ptr, alignof(m128))); - ptr = assume_aligned(ptr, 16); + ptr = vectorscan_assume_aligned(ptr, 16); *(m128 *)ptr = a; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vectorscan-vectorscan-5.4.8/src/util/simd_utils.h new/vectorscan-vectorscan-5.4.9/src/util/simd_utils.h --- old/vectorscan-vectorscan-5.4.8/src/util/simd_utils.h 2022-09-13 14:57:08.000000000 +0200 +++ new/vectorscan-vectorscan-5.4.9/src/util/simd_utils.h 2023-03-23 15:11:37.000000000 +0100 @@ -40,17 +40,17 @@ // it's available. Note that we need to handle C or C++ compilation. #ifdef __cplusplus # ifdef HAVE_CXX_BUILTIN_ASSUME_ALIGNED -# define assume_aligned(x, y) __builtin_assume_aligned((x), (y)) +# define vectorscan_assume_aligned(x, y) __builtin_assume_aligned((x), (y)) # endif #else # ifdef HAVE_CC_BUILTIN_ASSUME_ALIGNED -# define assume_aligned(x, y) __builtin_assume_aligned((x), (y)) +# define vectorscan_assume_aligned(x, y) __builtin_assume_aligned((x), (y)) # endif #endif // Fallback to identity case. -#ifndef assume_aligned -#define assume_aligned(x, y) (x) +#ifndef vectorscan_assume_aligned +#define vectorscan_assume_aligned(x, y) (x) #endif #ifdef __cplusplus diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vectorscan-vectorscan-5.4.8/src/util/supervector/arch/arm/impl.cpp new/vectorscan-vectorscan-5.4.9/src/util/supervector/arch/arm/impl.cpp --- old/vectorscan-vectorscan-5.4.8/src/util/supervector/arch/arm/impl.cpp 2022-09-13 14:57:08.000000000 +0200 +++ new/vectorscan-vectorscan-5.4.9/src/util/supervector/arch/arm/impl.cpp 2023-03-23 15:11:37.000000000 +0100 @@ -518,7 +518,7 @@ really_inline SuperVector<16> SuperVector<16>::load(void const *ptr) { assert(ISALIGNED_N(ptr, alignof(SuperVector::size))); - ptr = assume_aligned(ptr, SuperVector::size); + ptr = vectorscan_assume_aligned(ptr, SuperVector::size); return {vld1q_s32((const int32_t *)ptr)}; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vectorscan-vectorscan-5.4.8/src/util/supervector/arch/ppc64el/impl.cpp new/vectorscan-vectorscan-5.4.9/src/util/supervector/arch/ppc64el/impl.cpp --- old/vectorscan-vectorscan-5.4.8/src/util/supervector/arch/ppc64el/impl.cpp 2022-09-13 14:57:08.000000000 +0200 +++ new/vectorscan-vectorscan-5.4.9/src/util/supervector/arch/ppc64el/impl.cpp 2023-03-23 15:11:37.000000000 +0100 @@ -49,7 +49,7 @@ template<> template<> -really_inline SuperVector<16>::SuperVector(char __bool __vector v) +really_inline SuperVector<16>::SuperVector(__vector __bool char v) { u.u8x16[0] = (uint8x16_t) v; }; @@ -269,10 +269,10 @@ template <> really_inline typename SuperVector<16>::comparemask_type SuperVector<16>::comparemask(void) const { - uint8x16_t bitmask = vec_gb( u.u8x16[0]); static uint8x16_t perm = { 16, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + uint8x16_t bitmask = vec_gb(u.u8x16[0]); bitmask = (uint8x16_t) vec_perm(vec_splat_u8(0), bitmask, perm); - u32 movemask; + u32 ALIGN_ATTR(16) movemask; vec_ste((uint32x4_t) bitmask, 0, &movemask); return movemask; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vectorscan-vectorscan-5.4.8/src/util/supervector/arch/x86/impl.cpp new/vectorscan-vectorscan-5.4.9/src/util/supervector/arch/x86/impl.cpp --- old/vectorscan-vectorscan-5.4.8/src/util/supervector/arch/x86/impl.cpp 2022-09-13 14:57:08.000000000 +0200 +++ new/vectorscan-vectorscan-5.4.9/src/util/supervector/arch/x86/impl.cpp 2023-03-23 15:11:37.000000000 +0100 @@ -515,7 +515,7 @@ really_inline SuperVector<16> SuperVector<16>::load(void const *ptr) { assert(ISALIGNED_N(ptr, alignof(SuperVector::size))); - ptr = assume_aligned(ptr, SuperVector::size); + ptr = vectorscan_assume_aligned(ptr, SuperVector::size); return _mm_load_si128((const m128 *)ptr); } @@ -523,9 +523,7 @@ really_inline SuperVector<16> SuperVector<16>::loadu_maskz(void const *ptr, uint8_t const len) { SuperVector mask = Ones_vshr(16 -len); - mask.print8("mask"); SuperVector v = _mm_loadu_si128((const m128 *)ptr); - v.print8("v"); return mask & v; } @@ -1121,7 +1119,7 @@ really_inline SuperVector<32> SuperVector<32>::load(void const *ptr) { assert(ISALIGNED_N(ptr, alignof(SuperVector::size))); - ptr = assume_aligned(ptr, SuperVector::size); + ptr = vectorscan_assume_aligned(ptr, SuperVector::size); return {_mm256_load_si256((const m256 *)ptr)}; } @@ -1771,7 +1769,7 @@ really_inline SuperVector<64> SuperVector<64>::load(void const *ptr) { assert(ISALIGNED_N(ptr, alignof(SuperVector::size))); - ptr = assume_aligned(ptr, SuperVector::size); + ptr = vectorscan_assume_aligned(ptr, SuperVector::size); return {_mm512_load_si512((const m512 *)ptr)}; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vectorscan-vectorscan-5.4.8/src/util/supervector/supervector.hpp new/vectorscan-vectorscan-5.4.9/src/util/supervector/supervector.hpp --- old/vectorscan-vectorscan-5.4.8/src/util/supervector/supervector.hpp 2022-09-13 14:57:08.000000000 +0200 +++ new/vectorscan-vectorscan-5.4.9/src/util/supervector/supervector.hpp 2023-03-23 15:11:37.000000000 +0100 @@ -76,17 +76,17 @@ // it's available. Note that we need to handle C or C++ compilation. #ifdef __cplusplus # ifdef HAVE_CXX_BUILTIN_ASSUME_ALIGNED -# define assume_aligned(x, y) __builtin_assume_aligned((x), (y)) +# define vectorscan_assume_aligned(x, y) __builtin_assume_aligned((x), (y)) # endif #else # ifdef HAVE_CC_BUILTIN_ASSUME_ALIGNED -# define assume_aligned(x, y) __builtin_assume_aligned((x), (y)) +# define vectorscan_assume_aligned(x, y) __builtin_assume_aligned((x), (y)) # endif #endif // Fallback to identity case. -#ifndef assume_aligned -#define assume_aligned(x, y) (x) +#ifndef vectorscan_assume_aligned +#define vectorscan_assume_aligned(x, y) (x) #endif template <uint16_t SIZE> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vectorscan-vectorscan-5.4.8/tools/hscollider/ColliderCorporaParser.rl new/vectorscan-vectorscan-5.4.9/tools/hscollider/ColliderCorporaParser.rl --- old/vectorscan-vectorscan-5.4.8/tools/hscollider/ColliderCorporaParser.rl 2022-09-13 14:57:08.000000000 +0200 +++ new/vectorscan-vectorscan-5.4.9/tools/hscollider/ColliderCorporaParser.rl 2023-03-23 15:11:37.000000000 +0100 @@ -57,6 +57,7 @@ %%{ machine FileCorporaParser; + alphtype unsigned char; action accumulateNum { num = (num * 10) + (fc - '0'); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vectorscan-vectorscan-5.4.8/util/CMakeLists.txt new/vectorscan-vectorscan-5.4.9/util/CMakeLists.txt --- old/vectorscan-vectorscan-5.4.8/util/CMakeLists.txt 2022-09-13 14:57:08.000000000 +0200 +++ new/vectorscan-vectorscan-5.4.9/util/CMakeLists.txt 2023-03-23 15:11:37.000000000 +0100 @@ -6,8 +6,10 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${PROJECT_SOURCE_DIR}) +message("RAGEL_C_FLAGS" ${RAGEL_C_FLAGS}) + set_source_files_properties( - ${CMAKE_BINARY_DIR}/tools/ExpressionParser.cpp + ${CMAKE_BINARY_DIR}/util/ExpressionParser.cpp PROPERTIES COMPILE_FLAGS "${RAGEL_C_FLAGS}") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vectorscan-vectorscan-5.4.8/util/ExpressionParser.rl new/vectorscan-vectorscan-5.4.9/util/ExpressionParser.rl --- old/vectorscan-vectorscan-5.4.8/util/ExpressionParser.rl 2022-09-13 14:57:08.000000000 +0200 +++ new/vectorscan-vectorscan-5.4.9/util/ExpressionParser.rl 2023-03-23 15:11:37.000000000 +0100 @@ -55,6 +55,7 @@ %%{ machine ExpressionParser; + alphtype unsigned char; action accumulateNum { num = (num * 10) + (fc - '0');