From f8fdd979f17421f3ec3bad96aaf4e2cc729ff8a9 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Wed, 17 Jan 2024 17:00:47 +0200 Subject: [PATCH 01/27] set default x86 architecture to baseline --- cmake/archdetect.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/archdetect.cmake b/cmake/archdetect.cmake index bd0d088c..b1bd9cc6 100644 --- a/cmake/archdetect.cmake +++ b/cmake/archdetect.cmake @@ -81,11 +81,11 @@ else() set(GNUCC_ARCH power8) set(TUNE_FLAG power8) else() - set(GNUCC_ARCH native) + set(GNUCC_ARCH x86-64-v2) set(TUNE_FLAG generic) endif() elseif (ARCH_IA32 OR ARCH_X86_64) - set(GNUCC_ARCH native) + set(GNUCC_ARCH x86-64-v2) set(TUNE_FLAG generic) elseif(ARCH_AARCH64) if (BUILD_SVE2_BITPERM) From ac02b589beebad99820a8b42e6b96e598e7da929 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Wed, 17 Jan 2024 17:02:08 +0200 Subject: [PATCH 02/27] fix unused-variable warning --- unit/internal/depth.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/unit/internal/depth.cpp b/unit/internal/depth.cpp index 726aa92c..785b3e46 100644 --- a/unit/internal/depth.cpp +++ b/unit/internal/depth.cpp @@ -68,8 +68,10 @@ TEST(depth, ctor) { } TEST(depth, convert_throw) { - ASSERT_THROW(u32 v = depth::infinity(), DepthOverflowError); - ASSERT_THROW(u32 v = depth::unreachable(), DepthOverflowError); + u32 v; + (void)v; + ASSERT_THROW(v = depth::infinity(), DepthOverflowError); + ASSERT_THROW(v = depth::unreachable(), DepthOverflowError); } TEST(depth, is_finite) { From 4d2bcff7b4b939b711c8bf248c3001a74de7b14e Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Wed, 17 Jan 2024 17:02:32 +0200 Subject: [PATCH 03/27] remove unused variable --- unit/hyperscan/arg_checks.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/unit/hyperscan/arg_checks.cpp b/unit/hyperscan/arg_checks.cpp index 21c8707f..45a73d41 100644 --- a/unit/hyperscan/arg_checks.cpp +++ b/unit/hyperscan/arg_checks.cpp @@ -2430,7 +2430,6 @@ TEST(HyperscanArgChecks, ExpandNoTo) { err = hs_compress_stream(stream1, buf, sizeof(buf), &used); ASSERT_EQ(HS_SUCCESS, err); - hs_stream_t *stream2; err = hs_expand_stream(db, nullptr, buf, used); ASSERT_EQ(HS_INVALID, err); From afb1a1705f8073ba43b38845d3aa1329634083ed Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Wed, 17 Jan 2024 17:03:19 +0200 Subject: [PATCH 04/27] fix more unused-variable warnings --- unit/internal/multi_bit_compress.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/unit/internal/multi_bit_compress.cpp b/unit/internal/multi_bit_compress.cpp index 14c3f480..e7431174 100644 --- a/unit/internal/multi_bit_compress.cpp +++ b/unit/internal/multi_bit_compress.cpp @@ -402,6 +402,7 @@ TEST_P(MultiBitCompTest, CompCompressDecompressDense) { TEST(MultiBitComp, CompIntegration1) { // 256 + 1 --> smallest 2-level mmbit u32 total_size = mmbit_size(257); + (void)total_size; mmbit_holder ba(257); //-------------------- 1 -----------------------// @@ -517,6 +518,7 @@ TEST(MultiBitComp, CompIntegration1) { TEST(MultiBitComp, CompIntegration2) { // 64^2 + 1 --> smallest 3-level mmbit u32 total_size = mmbit_size(4097); + (void)total_size; mmbit_holder ba(4097); //-------------------- 1 -----------------------// @@ -646,6 +648,7 @@ TEST(MultiBitComp, CompIntegration2) { TEST(MultiBitComp, CompIntegration3) { // 64^3 + 1 --> smallest 4-level mmbit u32 total_size = mmbit_size(262145); + (void)total_size; mmbit_holder ba(262145); //-------------------- 1 -----------------------// From 9fac2bf78d3d10c5522a1741505dbb2c8aea6090 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Wed, 17 Jan 2024 17:13:51 +0200 Subject: [PATCH 05/27] remove unused constant --- src/rose/rose_build_matchers.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/rose/rose_build_matchers.cpp b/src/rose/rose_build_matchers.cpp index 96cdfbe5..aa7a794d 100644 --- a/src/rose/rose_build_matchers.cpp +++ b/src/rose/rose_build_matchers.cpp @@ -62,8 +62,6 @@ using boost::adaptors::map_values; namespace ue2 { -static const size_t MAX_ACCEL_STRING_LEN = 16; - #if defined(DEBUG) || defined(DUMP_SUPPORT) static UNUSED string dumpMask(const vector &v) { From 5e1972efce3a2ba48e54a53d10c51d582b7b51d1 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Wed, 17 Jan 2024 17:15:32 +0200 Subject: [PATCH 06/27] remove redundant moves --- src/nfa/goughcompile.cpp | 2 +- src/nfa/mcclellancompile.cpp | 2 +- src/nfa/shengcompile.cpp | 2 +- src/parser/Parser.rl | 2 +- tools/hsbench/engine_hyperscan.cpp | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/nfa/goughcompile.cpp b/src/nfa/goughcompile.cpp index 343a793b..59ef052f 100644 --- a/src/nfa/goughcompile.cpp +++ b/src/nfa/goughcompile.cpp @@ -1299,7 +1299,7 @@ unique_ptr gough_build_strat::gatherReports( *arbReport = MO_INVALID_IDX; assert(!ri->rl.empty()); /* all components should be able to generate reports */ - return std::move(ri); + return ri; } u32 raw_gough_report_info_impl::getReportListSize() const { diff --git a/src/nfa/mcclellancompile.cpp b/src/nfa/mcclellancompile.cpp index d165b1fa..3f217ed3 100644 --- a/src/nfa/mcclellancompile.cpp +++ b/src/nfa/mcclellancompile.cpp @@ -462,7 +462,7 @@ unique_ptr mcclellan_build_strat::gatherReports( *isSingleReport = 0; } - return std::move(ri); + return ri; } u32 raw_report_info_impl::getReportListSize() const { diff --git a/src/nfa/shengcompile.cpp b/src/nfa/shengcompile.cpp index aa353783..055e1971 100644 --- a/src/nfa/shengcompile.cpp +++ b/src/nfa/shengcompile.cpp @@ -270,7 +270,7 @@ unique_ptr sheng_build_strat::gatherReports( *isSingleReport = 0; } - return std::move(ri); + return ri; } u32 sheng_build_strat::max_allowed_offset_accel() const { diff --git a/src/parser/Parser.rl b/src/parser/Parser.rl index ba01511a..e5cbfe2b 100644 --- a/src/parser/Parser.rl +++ b/src/parser/Parser.rl @@ -2024,7 +2024,7 @@ unique_ptr parse(const char *ptr, ParseMode &globalMode) { // Ensure that all references are valid. checkReferences(*rootSeq, groupIndex, groupNames); - return std::move(rootSeq); + return rootSeq; } catch (LocatedParseError &error) { if (ts >= ptr && ts <= pe) { error.locate(ts - ptr); diff --git a/tools/hsbench/engine_hyperscan.cpp b/tools/hsbench/engine_hyperscan.cpp index 0256dc97..95461de5 100644 --- a/tools/hsbench/engine_hyperscan.cpp +++ b/tools/hsbench/engine_hyperscan.cpp @@ -174,7 +174,7 @@ unique_ptr EngineHyperscan::streamOpen(EngineContext &ectx, return nullptr; } stream->sn = streamId; - return std::move(stream); + return stream; } void EngineHyperscan::streamClose(unique_ptr stream, From 6b9068db0f61b64b40ed1d99a1c6488ffbe85ca8 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Wed, 17 Jan 2024 17:16:02 +0200 Subject: [PATCH 07/27] initialize variable --- src/nfa/mcclellancompile.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nfa/mcclellancompile.cpp b/src/nfa/mcclellancompile.cpp index 3f217ed3..36545e98 100644 --- a/src/nfa/mcclellancompile.cpp +++ b/src/nfa/mcclellancompile.cpp @@ -620,7 +620,7 @@ bytecode_ptr mcclellanCompile16(dfa_info &info, const CompileContext &cc, u8 alphaShift = info.getAlphaShift(); assert(alphaShift <= 8); - u16 count_real_states; + u16 count_real_states{0}; u16 wide_limit; if (!allocateFSN16(info, &count_real_states, &wide_limit)) { DEBUG_PRINTF("failed to allocate state numbers, %zu states total\n", From 73f70e3d2e3abb19ed7560b8158b3f6cfe172c89 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Wed, 17 Jan 2024 17:18:12 +0200 Subject: [PATCH 08/27] WIP: only keep the absolutely necessary warning exceptions --- cmake/cflags-generic.cmake | 157 ++++++++++++++++++------------------- 1 file changed, 77 insertions(+), 80 deletions(-) diff --git a/cmake/cflags-generic.cmake b/cmake/cflags-generic.cmake index 4eabcdb5..daae6eaf 100644 --- a/cmake/cflags-generic.cmake +++ b/cmake/cflags-generic.cmake @@ -1,22 +1,19 @@ # set compiler flags - more are tested and added later -set(EXTRA_C_FLAGS "${OPT_C_FLAG} -std=c17 -Wall -Wextra -Wshadow -Wcast-qual -fno-strict-aliasing") -set(EXTRA_CXX_FLAGS "${OPT_CXX_FLAG} -std=c++17 -Wall -Wextra -Wshadow -Wswitch -Wreturn-type -Wcast-qual -Wno-deprecated -Wnon-virtual-dtor -fno-strict-aliasing") +set(EXTRA_C_FLAGS "${OPT_C_FLAG} -std=c17 -Wall -Wextra ")#-Wshadow -Wcast-qual -fno-strict-aliasing") +set(EXTRA_CXX_FLAGS "${OPT_CXX_FLAG} -std=c++17 -Wall -Wextra ")# -Wshadow -Wswitch -Wreturn-type -Wcast-qual -Wno-deprecated -Wnon-virtual-dtor -fno-strict-aliasing") if (NOT CMAKE_COMPILER_IS_CLANG) set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -fno-new-ttp-matching") endif() -if (NOT RELEASE_BUILD) - # -Werror is most useful during development, don't potentially break - # 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() +# Always use -Werror *also during release builds +set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wall -Werror -fno-inline") +set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wall -Werror -fno-inline") +#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() if (DISABLE_ASSERTS) set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -DNDEBUG") @@ -25,23 +22,23 @@ endif() if(CMAKE_COMPILER_IS_GNUCC) # spurious warnings? - set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-array-bounds -Wno-maybe-uninitialized") + set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-array-bounds ") #-Wno-maybe-uninitialized") endif() -if(CMAKE_COMPILER_IS_GNUCXX) - set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-maybe-uninitialized") - if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) - set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -fabi-version=0") - endif () - # don't complain about abi - set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-abi") - set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-abi") -endif() +#if(CMAKE_COMPILER_IS_GNUCXX) +# set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-maybe-uninitialized") +# if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) +# set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -fabi-version=0") +# endif () +# # don't complain about abi +# set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-abi") +# set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-abi") +#endif() -if (NOT(ARCH_IA32 AND RELEASE_BUILD)) - set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -fno-omit-frame-pointer") - set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -fno-omit-frame-pointer") -endif() +#if (NOT(ARCH_IA32 AND RELEASE_BUILD)) +# set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -fno-omit-frame-pointer") +# set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -fno-omit-frame-pointer") +#endif() CHECK_INCLUDE_FILES(unistd.h HAVE_UNISTD_H) CHECK_FUNCTION_EXISTS(posix_memalign HAVE_POSIX_MEMALIGN) @@ -71,45 +68,45 @@ if (NOT CMAKE_COMPILER_IS_CLANG) CHECK_C_SOURCE_COMPILES("int main(void) { __builtin_constant_p(0); }" HAVE__BUILTIN_CONSTANT_P) endif() -set(C_FLAGS_TO_CHECK +#set(C_FLAGS_TO_CHECK # Variable length arrays are way bad, most especially at run time -"-Wvla" +#"-Wvla" # Pointer arith on void pointers is doing it wrong. - "-Wpointer-arith" +# "-Wpointer-arith" # Build our C code with -Wstrict-prototypes -Wmissing-prototypes - "-Wstrict-prototypes" - "-Wmissing-prototypes" -) -foreach (FLAG ${C_FLAGS_TO_CHECK}) - # munge the name so it doesn't break things - string(REPLACE "-" "_" FNAME C_FLAG${FLAG}) - CHECK_C_COMPILER_FLAG("${FLAG}" ${FNAME}) - if (${FNAME}) - set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} ${FLAG}") - endif() -endforeach() +# "-Wstrict-prototypes" +# "-Wmissing-prototypes" +#) +#foreach (FLAG ${C_FLAGS_TO_CHECK}) +# # munge the name so it doesn't break things +# string(REPLACE "-" "_" FNAME C_FLAG${FLAG}) +# CHECK_C_COMPILER_FLAG("${FLAG}" ${FNAME}) +# if (${FNAME}) +# set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} ${FLAG}") +# endif() +#endforeach() # self-assign should be thrown away, but clang whinges -CHECK_C_COMPILER_FLAG("-Wself-assign" CC_SELF_ASSIGN) -if (CC_SELF_ASSIGN) - set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-self-assign") -endif() -CHECK_CXX_COMPILER_FLAG("-Wself-assign" CXX_SELF_ASSIGN) -if (CXX_SELF_ASSIGN) - set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-self-assign") -endif() +#CHECK_C_COMPILER_FLAG("-Wself-assign" CC_SELF_ASSIGN) +#if (CC_SELF_ASSIGN) +# set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-self-assign") +#endif() +#CHECK_CXX_COMPILER_FLAG("-Wself-assign" CXX_SELF_ASSIGN) +#if (CXX_SELF_ASSIGN) +# set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-self-assign") +#endif() # clang gets up in our face for going paren crazy with macros -CHECK_C_COMPILER_FLAG("-Wparentheses-equality" CC_PAREN_EQUALITY) -if (CC_PAREN_EQUALITY) - set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-parentheses-equality") -endif() +#CHECK_C_COMPILER_FLAG("-Wparentheses-equality" CC_PAREN_EQUALITY) +#if (CC_PAREN_EQUALITY) +# set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-parentheses-equality") +#endif() # clang complains about unused const vars in our Ragel-generated code. -CHECK_CXX_COMPILER_FLAG("-Wunused-const-variable" CXX_UNUSED_CONST_VAR) -if (CXX_UNUSED_CONST_VAR) - set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-unused-const-variable") -endif() +#CHECK_CXX_COMPILER_FLAG("-Wunused-const-variable" CXX_UNUSED_CONST_VAR) +#if (CXX_UNUSED_CONST_VAR) +# set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-unused-const-variable") +#endif() # clang-14 complains about unused-but-set variable. CHECK_CXX_COMPILER_FLAG("-Wunused-but-set-variable" CXX_UNUSED_BUT_SET_VAR) @@ -118,16 +115,16 @@ if (CXX_UNUSED_BUT_SET_VAR) endif() # clang-14 complains about using bitwise operator instead of logical ones. -CHECK_CXX_COMPILER_FLAG("-Wbitwise-instead-of-logical" CXX_BITWISE_INSTEAD_OF_LOGICAL) -if (CXX_BITWISE_INSTEAD_OF_LOGICAL) - set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-bitwise-instead-of-logical") -endif() +#CHECK_CXX_COMPILER_FLAG("-Wbitwise-instead-of-logical" CXX_BITWISE_INSTEAD_OF_LOGICAL) +#if (CXX_BITWISE_INSTEAD_OF_LOGICAL) +# set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-bitwise-instead-of-logical") +#endif() # clang-14 complains about using bitwise operator instead of logical ones. -CHECK_CXX_COMPILER_FLAG("-Wbitwise-instead-of-logical" CXX_BITWISE_INSTEAD_OF_LOGICAL) -if (CXX_BITWISE_INSTEAD_OF_LOGICAL) - set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-bitwise-instead-of-logical") -endif() +#CHECK_CXX_COMPILER_FLAG("-Wbitwise-instead-of-logical" CXX_BITWISE_INSTEAD_OF_LOGICAL) +#if (CXX_BITWISE_INSTEAD_OF_LOGICAL) +# set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-bitwise-instead-of-logical") +#endif() CHECK_CXX_COMPILER_FLAG("-Wignored-attributes" CXX_IGNORED_ATTR) if (CXX_IGNORED_ATTR) @@ -135,25 +132,25 @@ if (CXX_IGNORED_ATTR) endif() # gcc 9 complains about redundant move for returned variable -CHECK_CXX_COMPILER_FLAG("-Wredundant-move" CXX_REDUNDANT_MOVE) -if (CXX_REDUNDANT_MOVE) - set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-redundant-move") -endif() +#CHECK_CXX_COMPILER_FLAG("-Wredundant-move" CXX_REDUNDANT_MOVE) +#if (CXX_REDUNDANT_MOVE) +# set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-redundant-move") +#endif() # note this for later, g++ doesn't have this flag but clang does -CHECK_CXX_COMPILER_FLAG("-Wweak-vtables" CXX_WEAK_VTABLES) -if (CXX_WEAK_VTABLES) - set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wweak-vtables") -endif() +#CHECK_CXX_COMPILER_FLAG("-Wweak-vtables" CXX_WEAK_VTABLES) +#if (CXX_WEAK_VTABLES) +# set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wweak-vtables") +#endif() -CHECK_CXX_COMPILER_FLAG("-Wmissing-declarations" CXX_MISSING_DECLARATIONS) -if (CXX_MISSING_DECLARATIONS) - set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wmissing-declarations") -endif() +#CHECK_CXX_COMPILER_FLAG("-Wmissing-declarations" CXX_MISSING_DECLARATIONS) +#if (CXX_MISSING_DECLARATIONS) +# set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wmissing-declarations") +#endif() -CHECK_CXX_COMPILER_FLAG("-Wunused-local-typedefs" CXX_UNUSED_LOCAL_TYPEDEFS) +#CHECK_CXX_COMPILER_FLAG("-Wunused-local-typedefs" CXX_UNUSED_LOCAL_TYPEDEFS) -CHECK_CXX_COMPILER_FLAG("-Wunused-variable" CXX_WUNUSED_VARIABLE) +#CHECK_CXX_COMPILER_FLAG("-Wunused-variable" CXX_WUNUSED_VARIABLE) # gcc 10 complains about this CHECK_C_COMPILER_FLAG("-Wstringop-overflow" CC_STRINGOP_OVERFLOW) From f6387e34da36b9c48a29b47f544c672c0cd1eb97 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Thu, 18 Jan 2024 00:41:23 +0200 Subject: [PATCH 09/27] add info message --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index a9683205..d7e07a9a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -156,9 +156,11 @@ include (${CMAKE_MODULE_PATH}/sanitize.cmake) if (NOT FAT_RUNTIME) if (GNUCC_TUNE) + message(STATUS "GNUCC_TUNE is set") 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() + message(STATUS "GNUCC_TUNE is not set") 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() From 593299e7bb9515cfd4612cdde097b1818bd5b359 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Thu, 18 Jan 2024 00:41:56 +0200 Subject: [PATCH 10/27] check the correct define --- src/util/arch/x86/x86.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util/arch/x86/x86.h b/src/util/arch/x86/x86.h index d08f979f..58f2cf8c 100644 --- a/src/util/arch/x86/x86.h +++ b/src/util/arch/x86/x86.h @@ -64,7 +64,7 @@ #define HAVE_SIMD_512_BITS #endif -#if defined(__AVX512VBMI__) && defined(BUILD_AVX512) +#if defined(__AVX512VBMI__) && defined(BUILD_AVX512VBMI) #define HAVE_AVX512VBMI #endif From 9134cd6250f47034e15ef42981a3257ae4e3d506 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Thu, 18 Jan 2024 00:42:36 +0200 Subject: [PATCH 11/27] if we don't have a 256/512-bit SIMD engine, there is no need to have 32/64-byte alignment and gcc complains anyway --- src/util/simd_types.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/util/simd_types.h b/src/util/simd_types.h index e393d081..68fde3b7 100644 --- a/src/util/simd_types.h +++ b/src/util/simd_types.h @@ -54,13 +54,13 @@ typedef simde__m128i m128; #if !defined(m256) && !defined(HAVE_SIMD_256_BITS) -typedef struct ALIGN_AVX_DIRECTIVE {m128 lo; m128 hi;} m256; +typedef struct ALIGN_ATTR(16) {m128 lo; m128 hi;} m256; #endif typedef struct {m128 lo; m128 mid; m128 hi;} m384; #if !defined(m512) && !defined(HAVE_SIMD_512_BITS) -typedef struct ALIGN_ATTR(64) {m256 lo; m256 hi;} m512; +typedef struct ALIGN_ATTR(16) {m256 lo; m256 hi;} m512; #endif #endif /* SIMD_TYPES_H */ From 9e4789d374b295756cc4c4c9d38ec8907b276634 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Thu, 18 Jan 2024 00:43:11 +0200 Subject: [PATCH 12/27] fix some build misconfigurations on x86 --- cmake/cflags-x86.cmake | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/cmake/cflags-x86.cmake b/cmake/cflags-x86.cmake index 5ae21ee4..01200c27 100644 --- a/cmake/cflags-x86.cmake +++ b/cmake/cflags-x86.cmake @@ -1,29 +1,34 @@ option(BUILD_AVX512 "Enabling support for AVX512" OFF) option(BUILD_AVX512VBMI "Enabling support for AVX512VBMI" OFF) -set(SKYLAKE_FLAG "-march=skylake-avx512") -set(ICELAKE_FLAG "-march=icelake-server") +set(SKYLAKE_ARCH "skylake-avx512") +set(ICELAKE_ARCH "icelake-server") +set(SKYLAKE_FLAG "-march=${SKYLAKE_ARCH}") +set(ICELAKE_FLAG "-march=${ICELAKE_ARCH}") if (NOT FAT_RUNTIME) if (BUILD_AVX512VBMI) message (STATUS "AVX512VBMI implies AVX512, enabling BUILD_AVX512") set(BUILD_AVX512 ON) + set(BUILD_AVX2 ON) set(ARCH_C_FLAGS "${ICELAKE_FLAG}") set(ARCH_CXX_FLAGS "${ICELAKE_FLAG}") - endif () - if (BUILD_AVX512) + set(X86_ARCH "${ICELAKE_ARCH}") + elseif (BUILD_AVX512) message (STATUS "AVX512 implies AVX2, enabling BUILD_AVX2") set(BUILD_AVX2 ON) set(ARCH_C_FLAGS "${SKYLAKE_FLAG}") set(ARCH_CXX_FLAGS "${SKYLAKE_FLAG}") - endif () - if (BUILD_AVX2) + set(X86_ARCH "${SKYLAKE_ARCH}") + elseif (BUILD_AVX2) message (STATUS "Enabling BUILD_AVX2") set(ARCH_C_FLAGS "-mavx2") set(ARCH_CXX_FLAGS "-mavx2") + set(X86_ARCH "core-avx2") else() set(ARCH_C_FLAGS "-msse4.2") set(ARCH_CXX_FLAGS "-msse4.2") + set(X86_ARCH "core-i7") endif() else() set(BUILD_AVX512VBMI ON) @@ -31,6 +36,7 @@ else() set(BUILD_AVX2 ON) set(ARCH_C_FLAGS "-msse4.2") set(ARCH_CXX_FLAGS "-msse4.2") + set(X86_ARCH "x86-64-v2") endif() set(CMAKE_REQUIRED_FLAGS "${ARCH_C_FLAGS}") From b106c10b4dc74e16174f01817ad3b226058d0a8c Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Thu, 18 Jan 2024 00:43:32 +0200 Subject: [PATCH 13/27] use arch set in cflags-x86.cmake --- cmake/archdetect.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/archdetect.cmake b/cmake/archdetect.cmake index b1bd9cc6..9e07e126 100644 --- a/cmake/archdetect.cmake +++ b/cmake/archdetect.cmake @@ -69,7 +69,7 @@ if (USE_CPU_NATIVE) else() if (SIMDE_BACKEND) if (ARCH_IA32 OR ARCH_X86_64) - set(GNUCC_ARCH x86-64-v2) + set(GNUCC_ARCH ${X86_ARCH}) set(TUNE_FLAG generic) elseif(ARCH_AARCH64) set(GNUCC_ARCH armv8-a) @@ -85,7 +85,7 @@ else() set(TUNE_FLAG generic) endif() elseif (ARCH_IA32 OR ARCH_X86_64) - set(GNUCC_ARCH x86-64-v2) + set(GNUCC_ARCH ${X86_ARCH}) set(TUNE_FLAG generic) elseif(ARCH_AARCH64) if (BUILD_SVE2_BITPERM) From b6e3c660150e13db5706741bdf4c845a5207d7b1 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Thu, 18 Jan 2024 00:47:44 +0200 Subject: [PATCH 14/27] WIP: after cleaning up the code, remove the warnings from compilation flags --- cmake/cflags-generic.cmake | 82 ++++++++++++++------------------------ 1 file changed, 29 insertions(+), 53 deletions(-) diff --git a/cmake/cflags-generic.cmake b/cmake/cflags-generic.cmake index daae6eaf..bc6d0e9b 100644 --- a/cmake/cflags-generic.cmake +++ b/cmake/cflags-generic.cmake @@ -1,13 +1,13 @@ # set compiler flags - more are tested and added later -set(EXTRA_C_FLAGS "${OPT_C_FLAG} -std=c17 -Wall -Wextra ")#-Wshadow -Wcast-qual -fno-strict-aliasing") -set(EXTRA_CXX_FLAGS "${OPT_CXX_FLAG} -std=c++17 -Wall -Wextra ")# -Wshadow -Wswitch -Wreturn-type -Wcast-qual -Wno-deprecated -Wnon-virtual-dtor -fno-strict-aliasing") +set(EXTRA_C_FLAGS "${OPT_C_FLAG} -std=c17 -Wall -Wextra ") +set(EXTRA_CXX_FLAGS "${OPT_CXX_FLAG} -std=c++17 -Wall -Wextra ") if (NOT CMAKE_COMPILER_IS_CLANG) set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -fno-new-ttp-matching") endif() # Always use -Werror *also during release builds -set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wall -Werror -fno-inline") -set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wall -Werror -fno-inline") +set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wall -Werror") +set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wall -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") @@ -25,20 +25,9 @@ if(CMAKE_COMPILER_IS_GNUCC) set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-array-bounds ") #-Wno-maybe-uninitialized") endif() -#if(CMAKE_COMPILER_IS_GNUCXX) -# set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-maybe-uninitialized") -# if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) -# set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -fabi-version=0") -# endif () -# # don't complain about abi -# set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-abi") -# set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-abi") -#endif() - -#if (NOT(ARCH_IA32 AND RELEASE_BUILD)) -# set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -fno-omit-frame-pointer") -# set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -fno-omit-frame-pointer") -#endif() +if(CMAKE_COMPILER_IS_GNUCXX) + set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-maybe-uninitialized -Wno-uninitialized") +endif() CHECK_INCLUDE_FILES(unistd.h HAVE_UNISTD_H) CHECK_FUNCTION_EXISTS(posix_memalign HAVE_POSIX_MEMALIGN) @@ -114,48 +103,35 @@ if (CXX_UNUSED_BUT_SET_VAR) set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-unused-but-set-variable") endif() -# clang-14 complains about using bitwise operator instead of logical ones. -#CHECK_CXX_COMPILER_FLAG("-Wbitwise-instead-of-logical" CXX_BITWISE_INSTEAD_OF_LOGICAL) -#if (CXX_BITWISE_INSTEAD_OF_LOGICAL) -# set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-bitwise-instead-of-logical") -#endif() - -# clang-14 complains about using bitwise operator instead of logical ones. -#CHECK_CXX_COMPILER_FLAG("-Wbitwise-instead-of-logical" CXX_BITWISE_INSTEAD_OF_LOGICAL) -#if (CXX_BITWISE_INSTEAD_OF_LOGICAL) -# set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-bitwise-instead-of-logical") -#endif() - CHECK_CXX_COMPILER_FLAG("-Wignored-attributes" CXX_IGNORED_ATTR) -if (CXX_IGNORED_ATTR) - set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-ignored-attributes") +if(CMAKE_COMPILER_IS_GNUCC) + if (CXX_IGNORED_ATTR) + set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-ignored-attributes") + endif() endif() -# gcc 9 complains about redundant move for returned variable -#CHECK_CXX_COMPILER_FLAG("-Wredundant-move" CXX_REDUNDANT_MOVE) -#if (CXX_REDUNDANT_MOVE) -# set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-redundant-move") -#endif() +CHECK_CXX_COMPILER_FLAG("-Wignored-attributes" CXX_NON_NULL) +if(CMAKE_COMPILER_IS_GNUCC) + if (CXX_NON_NULL) + set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-nonnull") + endif() +endif() # note this for later, g++ doesn't have this flag but clang does -#CHECK_CXX_COMPILER_FLAG("-Wweak-vtables" CXX_WEAK_VTABLES) -#if (CXX_WEAK_VTABLES) -# set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wweak-vtables") -#endif() +CHECK_CXX_COMPILER_FLAG("-Wweak-vtables" CXX_WEAK_VTABLES) -#CHECK_CXX_COMPILER_FLAG("-Wmissing-declarations" CXX_MISSING_DECLARATIONS) -#if (CXX_MISSING_DECLARATIONS) -# set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wmissing-declarations") -#endif() +CHECK_CXX_COMPILER_FLAG("-Wmissing-declarations" CXX_MISSING_DECLARATIONS) -#CHECK_CXX_COMPILER_FLAG("-Wunused-local-typedefs" CXX_UNUSED_LOCAL_TYPEDEFS) +CHECK_CXX_COMPILER_FLAG("-Wunused-local-typedefs" CXX_UNUSED_LOCAL_TYPEDEFS) -#CHECK_CXX_COMPILER_FLAG("-Wunused-variable" CXX_WUNUSED_VARIABLE) +CHECK_CXX_COMPILER_FLAG("-Wunused-variable" CXX_WUNUSED_VARIABLE) -# gcc 10 complains about this -CHECK_C_COMPILER_FLAG("-Wstringop-overflow" CC_STRINGOP_OVERFLOW) -CHECK_CXX_COMPILER_FLAG("-Wstringop-overflow" CXX_STRINGOP_OVERFLOW) -if(CC_STRINGOP_OVERFLOW OR CXX_STRINGOP_OVERFLOW) - set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-stringop-overflow") - set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-stringop-overflow") +# gcc complains about this +if(CMAKE_COMPILER_IS_GNUCC) + CHECK_C_COMPILER_FLAG("-Wstringop-overflow" CC_STRINGOP_OVERFLOW) + CHECK_CXX_COMPILER_FLAG("-Wstringop-overflow" CXX_STRINGOP_OVERFLOW) + if(CC_STRINGOP_OVERFLOW OR CXX_STRINGOP_OVERFLOW) + set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-stringop-overflow -Wno-stringop-overread") + set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-stringop-overflow -Wno-stringop-overread") + endif() endif() From 719e1c9be6fd6fd316889ac7625253d0ad9c5fd5 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Thu, 18 Jan 2024 18:37:27 +0200 Subject: [PATCH 15/27] don't demand 32/64-byte alignment if there is no 256/512-bit SIMD engine --- unit/internal/simd_utils.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/unit/internal/simd_utils.cpp b/unit/internal/simd_utils.cpp index 272d5456..5a4199b4 100644 --- a/unit/internal/simd_utils.cpp +++ b/unit/internal/simd_utils.cpp @@ -648,9 +648,19 @@ TYPED_TEST(SimdUtilsTest, lshift64) { TEST(SimdUtilsTest, alignment) { ASSERT_EQ(16, alignof(m128)); +#if defined(HAVE_SIMD_256_BITS) ASSERT_EQ(32, alignof(m256)); +#else + ASSERT_EQ(16, alignof(m256)); +#endif ASSERT_EQ(16, alignof(m384)); +#if defined(HAVE_SIMD_512_BITS) ASSERT_EQ(64, alignof(m512)); +#elif defined(HAVE_SIMD_256_BITS) + ASSERT_EQ(32, alignof(m512)); +#else + ASSERT_EQ(16, alignof(m512)); +#endif } TEST(SimdUtilsTest, movq) { From 634c884204676f0ea6217c359db803c482f7f1a2 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Thu, 18 Jan 2024 21:22:42 +0200 Subject: [PATCH 16/27] use x86-64-v2 as default x86 arch for SIMDe --- cmake/archdetect.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/archdetect.cmake b/cmake/archdetect.cmake index 9e07e126..e7df51ed 100644 --- a/cmake/archdetect.cmake +++ b/cmake/archdetect.cmake @@ -69,7 +69,7 @@ if (USE_CPU_NATIVE) else() if (SIMDE_BACKEND) if (ARCH_IA32 OR ARCH_X86_64) - set(GNUCC_ARCH ${X86_ARCH}) + set(GNUCC_ARCH x86-64-v2) set(TUNE_FLAG generic) elseif(ARCH_AARCH64) set(GNUCC_ARCH armv8-a) From ffa69266084130393ba3f61738feb5e44ac5bc86 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Thu, 18 Jan 2024 22:08:05 +0200 Subject: [PATCH 17/27] set x86-64-v2 as baseline arch for fat runtime --- cmake/cflags-x86.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/cflags-x86.cmake b/cmake/cflags-x86.cmake index 01200c27..4e2b8a7d 100644 --- a/cmake/cflags-x86.cmake +++ b/cmake/cflags-x86.cmake @@ -28,7 +28,7 @@ if (NOT FAT_RUNTIME) else() set(ARCH_C_FLAGS "-msse4.2") set(ARCH_CXX_FLAGS "-msse4.2") - set(X86_ARCH "core-i7") + set(X86_ARCH "x86-64-v2") endif() else() set(BUILD_AVX512VBMI ON) From a1258680ac9feeec1fb37a5f99b62b38641e1f1b Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Thu, 18 Jan 2024 22:08:19 +0200 Subject: [PATCH 18/27] remove unused constants --- src/nfa/nfa_build_util.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/nfa/nfa_build_util.cpp b/src/nfa/nfa_build_util.cpp index ed0e2f01..522ab231 100644 --- a/src/nfa/nfa_build_util.cpp +++ b/src/nfa/nfa_build_util.cpp @@ -347,7 +347,6 @@ template<> struct NFATraits { UNUSED static const char *name; static const NFACategory category = NFA_OTHER; static const u32 stateAlign = 8; - static const bool fast = true; static const nfa_dispatch_fn has_accel; static const nfa_dispatch_fn has_repeats; static const nfa_dispatch_fn has_repeats_other_than_firsts; @@ -363,7 +362,6 @@ template<> struct NFATraits { UNUSED static const char *name; static const NFACategory category = NFA_OTHER; static const u32 stateAlign = 8; - static const bool fast = true; static const nfa_dispatch_fn has_accel; static const nfa_dispatch_fn has_repeats; static const nfa_dispatch_fn has_repeats_other_than_firsts; From 5d38d0d0a5c865831361581ee150d209008dd2db Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Thu, 18 Jan 2024 23:37:04 +0200 Subject: [PATCH 19/27] add needed deprecation warning exceptions for SIMDe on Power VSX --- cmake/simde.cmake | 4 ++++ unit/CMakeLists.txt | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/cmake/simde.cmake b/cmake/simde.cmake index 0ac52832..4cd56bad 100644 --- a/cmake/simde.cmake +++ b/cmake/simde.cmake @@ -10,6 +10,10 @@ if (SIMDE_SSE42_H_FOUND) if (CMAKE_COMPILER_IS_CLANG) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DSIMDE_NO_CHECK_IMMEDIATE_CONSTANT") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSIMDE_NO_CHECK_IMMEDIATE_CONSTANT") + if (ARCH_PPC64EL) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated-altivec-src-compat") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-altivec-src-compat") + endif() endif() if (SIMDE_NATIVE) diff --git a/unit/CMakeLists.txt b/unit/CMakeLists.txt index d1134b15..83eb4d66 100644 --- a/unit/CMakeLists.txt +++ b/unit/CMakeLists.txt @@ -29,6 +29,10 @@ if(CMAKE_COMPILER_IS_GNUCC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-array-bounds") endif() +if(CMAKE_COMPILER_IS_CLANG) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-pass-failed") +endif() + add_definitions(-DGTEST_HAS_PTHREAD=0 -DSRCDIR=${PROJECT_SOURCE_DIR}) set(unit_hyperscan_SOURCES From 3d0df318b8a9bc395581873a93e7b7f12df23428 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Thu, 18 Jan 2024 22:25:29 +0200 Subject: [PATCH 20/27] use snprintf() instead --- src/nfa/limex_dump.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nfa/limex_dump.cpp b/src/nfa/limex_dump.cpp index a22392b3..d9e49213 100644 --- a/src/nfa/limex_dump.cpp +++ b/src/nfa/limex_dump.cpp @@ -136,7 +136,7 @@ void dumpLimexReachMasks(u32 model_size, const u8 *reach, u32 reachCount, for (u32 i = 0; i < reachCount; i++) { char tmp_common[100]; const u8 *row = reach + (i * (model_size/8)); - sprintf(tmp_common, "reach mask %u ", i); + snprintf(tmp_common, sizeof(tmp_common), "reach mask %u ", i); dumpMask(f, tmp_common, row, model_size); } } From 4fb8cee35f2f90b779abb8b48b6b1adc9427a301 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Fri, 19 Jan 2024 11:23:17 +0200 Subject: [PATCH 21/27] -Wno-pass-failed is only for ppc64le --- unit/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unit/CMakeLists.txt b/unit/CMakeLists.txt index 83eb4d66..f5577d40 100644 --- a/unit/CMakeLists.txt +++ b/unit/CMakeLists.txt @@ -29,7 +29,7 @@ if(CMAKE_COMPILER_IS_GNUCC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-array-bounds") endif() -if(CMAKE_COMPILER_IS_CLANG) +if(CMAKE_COMPILER_IS_CLANG AND ARCH_PPC64EL) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-pass-failed") endif() From 1a4e878abefcbcaad8168834197186a9f1aa1e13 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Fri, 19 Jan 2024 15:23:11 +0200 Subject: [PATCH 22/27] Revert "if we don't have a 256/512-bit SIMD engine, there is no need to have 32/64-byte alignment and gcc complains anyway" This reverts commit 9134cd6250f47034e15ef42981a3257ae4e3d506. --- src/util/simd_types.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/util/simd_types.h b/src/util/simd_types.h index 68fde3b7..e393d081 100644 --- a/src/util/simd_types.h +++ b/src/util/simd_types.h @@ -54,13 +54,13 @@ typedef simde__m128i m128; #if !defined(m256) && !defined(HAVE_SIMD_256_BITS) -typedef struct ALIGN_ATTR(16) {m128 lo; m128 hi;} m256; +typedef struct ALIGN_AVX_DIRECTIVE {m128 lo; m128 hi;} m256; #endif typedef struct {m128 lo; m128 mid; m128 hi;} m384; #if !defined(m512) && !defined(HAVE_SIMD_512_BITS) -typedef struct ALIGN_ATTR(16) {m256 lo; m256 hi;} m512; +typedef struct ALIGN_ATTR(64) {m256 lo; m256 hi;} m512; #endif #endif /* SIMD_TYPES_H */ From 528a165c20c046ca1c245f86bfc7fa175836eb23 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Fri, 19 Jan 2024 17:41:40 +0200 Subject: [PATCH 23/27] Revert "don't demand 32/64-byte alignment if there is no 256/512-bit SIMD engine" This reverts commit 719e1c9be6fd6fd316889ac7625253d0ad9c5fd5. --- unit/internal/simd_utils.cpp | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/unit/internal/simd_utils.cpp b/unit/internal/simd_utils.cpp index 5a4199b4..272d5456 100644 --- a/unit/internal/simd_utils.cpp +++ b/unit/internal/simd_utils.cpp @@ -648,19 +648,9 @@ TYPED_TEST(SimdUtilsTest, lshift64) { TEST(SimdUtilsTest, alignment) { ASSERT_EQ(16, alignof(m128)); -#if defined(HAVE_SIMD_256_BITS) ASSERT_EQ(32, alignof(m256)); -#else - ASSERT_EQ(16, alignof(m256)); -#endif ASSERT_EQ(16, alignof(m384)); -#if defined(HAVE_SIMD_512_BITS) ASSERT_EQ(64, alignof(m512)); -#elif defined(HAVE_SIMD_256_BITS) - ASSERT_EQ(32, alignof(m512)); -#else - ASSERT_EQ(16, alignof(m512)); -#endif } TEST(SimdUtilsTest, movq) { From 5fa5e142b96b29062d83ad70915fb5a16e72bc2b Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Sat, 20 Jan 2024 17:45:56 +0200 Subject: [PATCH 24/27] add -Wno-deprecate-lax-vec-conv-all on clang 15 for Power only --- cmake/compiler.cmake | 1 + cmake/simde.cmake | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/cmake/compiler.cmake b/cmake/compiler.cmake index 4b174c72..1d45aea4 100644 --- a/cmake/compiler.cmake +++ b/cmake/compiler.cmake @@ -6,6 +6,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS CLANGCXX_MINVER) message(FATAL_ERROR "A minimum of clang++ ${CLANGCXX_MINVER} is required for C++17 support") endif() + string (REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\1" CLANG_MAJOR_VERSION "${CMAKE_CXX_COMPILER_VERSION}") endif() # compiler version checks TODO: test more compilers diff --git a/cmake/simde.cmake b/cmake/simde.cmake index 4cd56bad..9240fdc2 100644 --- a/cmake/simde.cmake +++ b/cmake/simde.cmake @@ -13,6 +13,10 @@ if (SIMDE_SSE42_H_FOUND) if (ARCH_PPC64EL) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated-altivec-src-compat") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-altivec-src-compat") + if (CLANG_MAJOR_VERSION EQUAL 15) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecate-lax-vec-conv-all") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecate-lax-vec-conv-all") + endif () endif() endif() From 68dab83799aa20206e0e2ec811584d758e326962 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Fri, 19 Jan 2024 18:52:35 +0200 Subject: [PATCH 25/27] Revert "fix unused-variable warning" This reverts commit ac02b589beebad99820a8b42e6b96e598e7da929. --- unit/internal/depth.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/unit/internal/depth.cpp b/unit/internal/depth.cpp index 785b3e46..726aa92c 100644 --- a/unit/internal/depth.cpp +++ b/unit/internal/depth.cpp @@ -68,10 +68,8 @@ TEST(depth, ctor) { } TEST(depth, convert_throw) { - u32 v; - (void)v; - ASSERT_THROW(v = depth::infinity(), DepthOverflowError); - ASSERT_THROW(v = depth::unreachable(), DepthOverflowError); + ASSERT_THROW(u32 v = depth::infinity(), DepthOverflowError); + ASSERT_THROW(u32 v = depth::unreachable(), DepthOverflowError); } TEST(depth, is_finite) { From 8cd365121d56d645232ba10e827a3cfa1b34ad13 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Fri, 19 Jan 2024 18:52:50 +0200 Subject: [PATCH 26/27] Revert "fix more unused-variable warnings" This reverts commit afb1a1705f8073ba43b38845d3aa1329634083ed. --- unit/internal/multi_bit_compress.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/unit/internal/multi_bit_compress.cpp b/unit/internal/multi_bit_compress.cpp index e7431174..14c3f480 100644 --- a/unit/internal/multi_bit_compress.cpp +++ b/unit/internal/multi_bit_compress.cpp @@ -402,7 +402,6 @@ TEST_P(MultiBitCompTest, CompCompressDecompressDense) { TEST(MultiBitComp, CompIntegration1) { // 256 + 1 --> smallest 2-level mmbit u32 total_size = mmbit_size(257); - (void)total_size; mmbit_holder ba(257); //-------------------- 1 -----------------------// @@ -518,7 +517,6 @@ TEST(MultiBitComp, CompIntegration1) { TEST(MultiBitComp, CompIntegration2) { // 64^2 + 1 --> smallest 3-level mmbit u32 total_size = mmbit_size(4097); - (void)total_size; mmbit_holder ba(4097); //-------------------- 1 -----------------------// @@ -648,7 +646,6 @@ TEST(MultiBitComp, CompIntegration2) { TEST(MultiBitComp, CompIntegration3) { // 64^3 + 1 --> smallest 4-level mmbit u32 total_size = mmbit_size(262145); - (void)total_size; mmbit_holder ba(262145); //-------------------- 1 -----------------------// From 01658be05d391f6e51ed4c62662b4a16e10d9777 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Sat, 20 Jan 2024 19:52:31 +0200 Subject: [PATCH 27/27] remove unused warning exceptions --- cmake/cflags-generic.cmake | 46 -------------------------------------- 1 file changed, 46 deletions(-) diff --git a/cmake/cflags-generic.cmake b/cmake/cflags-generic.cmake index bc6d0e9b..29b746a1 100644 --- a/cmake/cflags-generic.cmake +++ b/cmake/cflags-generic.cmake @@ -8,12 +8,6 @@ endif() # Always use -Werror *also during release builds set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wall -Werror") set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wall -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() if (DISABLE_ASSERTS) set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -DNDEBUG") @@ -57,46 +51,6 @@ if (NOT CMAKE_COMPILER_IS_CLANG) CHECK_C_SOURCE_COMPILES("int main(void) { __builtin_constant_p(0); }" HAVE__BUILTIN_CONSTANT_P) endif() -#set(C_FLAGS_TO_CHECK -# Variable length arrays are way bad, most especially at run time -#"-Wvla" -# Pointer arith on void pointers is doing it wrong. -# "-Wpointer-arith" -# Build our C code with -Wstrict-prototypes -Wmissing-prototypes -# "-Wstrict-prototypes" -# "-Wmissing-prototypes" -#) -#foreach (FLAG ${C_FLAGS_TO_CHECK}) -# # munge the name so it doesn't break things -# string(REPLACE "-" "_" FNAME C_FLAG${FLAG}) -# CHECK_C_COMPILER_FLAG("${FLAG}" ${FNAME}) -# if (${FNAME}) -# set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} ${FLAG}") -# endif() -#endforeach() - -# self-assign should be thrown away, but clang whinges -#CHECK_C_COMPILER_FLAG("-Wself-assign" CC_SELF_ASSIGN) -#if (CC_SELF_ASSIGN) -# set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-self-assign") -#endif() -#CHECK_CXX_COMPILER_FLAG("-Wself-assign" CXX_SELF_ASSIGN) -#if (CXX_SELF_ASSIGN) -# set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-self-assign") -#endif() - -# clang gets up in our face for going paren crazy with macros -#CHECK_C_COMPILER_FLAG("-Wparentheses-equality" CC_PAREN_EQUALITY) -#if (CC_PAREN_EQUALITY) -# set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-parentheses-equality") -#endif() - -# clang complains about unused const vars in our Ragel-generated code. -#CHECK_CXX_COMPILER_FLAG("-Wunused-const-variable" CXX_UNUSED_CONST_VAR) -#if (CXX_UNUSED_CONST_VAR) -# set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-unused-const-variable") -#endif() - # clang-14 complains about unused-but-set variable. CHECK_CXX_COMPILER_FLAG("-Wunused-but-set-variable" CXX_UNUSED_BUT_SET_VAR) if (CXX_UNUSED_BUT_SET_VAR)