Testing with GCC 10 and clang 10 (#926)
* Testing with GCC 10 and clang 10 * Fixing spurious space * gcc10 does not need the cmake installation. * We don't want to run the perf test on ARM. I ignore them systematically. ARM performance should be assessed manually. * Switching to GCC 10 and Clang 10 * Disabling some tests under sanitizers when they involve rapidjson or other parsers. Co-authored-by: Daniel Lemire <lemire@gmai.com>
This commit is contained in:
parent
bd2d0f769f
commit
89b059b1ea
|
@ -29,6 +29,24 @@ executors:
|
|||
BUILD_FLAGS: -j
|
||||
CTEST_FLAGS: -j4 --output-on-failure
|
||||
|
||||
gcc10:
|
||||
docker:
|
||||
- image: conanio/gcc10
|
||||
environment:
|
||||
CXX: g++-10
|
||||
CC: gcc-10
|
||||
BUILD_FLAGS: -j
|
||||
CTEST_FLAGS: -j4 --output-on-failure
|
||||
|
||||
clang10:
|
||||
docker:
|
||||
- image: conanio/clang10
|
||||
environment:
|
||||
CXX: clang++-10
|
||||
CC: clang-10
|
||||
BUILD_FLAGS: -j
|
||||
CTEST_FLAGS: -j4 --output-on-failure
|
||||
|
||||
clang9:
|
||||
docker:
|
||||
- image: conanio/clang9
|
||||
|
@ -101,62 +119,72 @@ jobs:
|
|||
executor: gcc7
|
||||
environment: { CMAKE_FLAGS: -DSIMDJSON_GOOGLE_BENCHMARKS=ON }
|
||||
steps: [ install_cmake, cmake_test_all, cmake_install_test ]
|
||||
gcc10:
|
||||
description: Build and run tests on GCC 10 and AVX 2 with a cmake static build
|
||||
executor: gcc10
|
||||
environment: { CMAKE_FLAGS: -DSIMDJSON_GOOGLE_BENCHMARKS=ON }
|
||||
steps: [ cmake_test_all, cmake_install_test ]
|
||||
clang6:
|
||||
description: Build and run tests on clang 6 and AVX 2 with a cmake static build
|
||||
executor: clang6
|
||||
environment: { CMAKE_FLAGS: -DSIMDJSON_GOOGLE_BENCHMARKS=ON }
|
||||
steps: [ cmake_test_all, cmake_install_test ]
|
||||
steps: [ cmake_test, cmake_install_test ]
|
||||
clang10:
|
||||
description: Build and run tests on clang 10 and AVX 2 with a cmake static build
|
||||
executor: clang10
|
||||
environment: { CMAKE_FLAGS: -DSIMDJSON_GOOGLE_BENCHMARKS=ON }
|
||||
steps: [ cmake_test, cmake_install_test ]
|
||||
# libcpp
|
||||
libcpp-clang9:
|
||||
description: Build and run tests on clang 6 and AVX 2 with a cmake static build and libc++
|
||||
executor: clang9
|
||||
libcpp-clang10:
|
||||
description: Build and run tests on clang 10 and AVX 2 with a cmake static build and libc++
|
||||
executor: clang10
|
||||
environment: { CMAKE_FLAGS: -DSIMDJSON_USE_LIBCPP=ON }
|
||||
steps: [ cmake_test_all, cmake_install_test ]
|
||||
# sanitize
|
||||
sanitize-gcc9:
|
||||
description: Build and run tests on GCC 9 and AVX 2 with a cmake sanitize build
|
||||
executor: gcc9
|
||||
sanitize-gcc10:
|
||||
description: Build and run tests on GCC 10 and AVX 2 with a cmake sanitize build
|
||||
executor: gcc10
|
||||
environment: { CMAKE_FLAGS: -DSIMDJSON_BUILD_STATIC=OFF -DSIMDJSON_SANITIZE=ON, BUILD_FLAGS: "", CTEST_FLAGS: -j4 --output-on-failure -E checkperf }
|
||||
steps: [ cmake_test_all ]
|
||||
sanitize-clang9:
|
||||
description: Build and run tests on clang 6 and AVX 2 with a cmake sanitize build
|
||||
executor: clang9
|
||||
steps: [ cmake_test ]
|
||||
sanitize-clang10:
|
||||
description: Build and run tests on clang 10 and AVX 2 with a cmake sanitize build
|
||||
executor: clang10
|
||||
environment: { CMAKE_FLAGS: -DSIMDJSON_BUILD_STATIC=OFF -DSIMDJSON_SANITIZE=ON, CTEST_FLAGS: -j4 --output-on-failure -E checkperf }
|
||||
steps: [ cmake_test_all ]
|
||||
steps: [ cmake_test ]
|
||||
|
||||
# dynamic
|
||||
dynamic-gcc9:
|
||||
description: Build and run tests on GCC 7 and AVX 2 with a cmake dynamic build
|
||||
executor: gcc9
|
||||
dynamic-gcc10:
|
||||
description: Build and run tests on GCC 10 and AVX 2 with a cmake dynamic build
|
||||
executor: gcc10
|
||||
environment: { CMAKE_FLAGS: -DSIMDJSON_BUILD_STATIC=OFF }
|
||||
steps: [ cmake_test, cmake_install_test ]
|
||||
dynamic-clang9:
|
||||
description: Build and run tests on clang 6 and AVX 2 with a cmake dynamic build
|
||||
executor: clang9
|
||||
dynamic-clang10:
|
||||
description: Build and run tests on clang 10 and AVX 2 with a cmake dynamic build
|
||||
executor: clang10
|
||||
environment: { CMAKE_FLAGS: -DSIMDJSON_BUILD_STATIC=OFF }
|
||||
steps: [ cmake_test, cmake_install_test ]
|
||||
|
||||
# unthreaded
|
||||
unthreaded-gcc9:
|
||||
description: Build and run tests on GCC 7 and AVX 2 *without* threads
|
||||
executor: gcc9
|
||||
unthreaded-gcc10:
|
||||
description: Build and run tests on GCC 10 and AVX 2 *without* threads
|
||||
executor: gcc10
|
||||
environment: { CMAKE_FLAGS: -DSIMDJSON_ENABLE_THREADS=OFF }
|
||||
steps: [ cmake_test, cmake_install_test ]
|
||||
unthreaded-clang9:
|
||||
description: Build and run tests on Clang 6 and AVX 2 *without* threads
|
||||
executor: clang9
|
||||
unthreaded-clang10:
|
||||
description: Build and run tests on Clang 10 and AVX 2 *without* threads
|
||||
executor: clang10
|
||||
environment: { CMAKE_FLAGS: -DSIMDJSON_ENABLE_THREADS=OFF }
|
||||
steps: [ cmake_test, cmake_install_test ]
|
||||
|
||||
# noexcept
|
||||
noexcept-gcc9:
|
||||
description: Build and run tests on GCC 7 and AVX 2 with exceptions off
|
||||
executor: gcc9
|
||||
noexcept-gcc10:
|
||||
description: Build and run tests on GCC 10 and AVX 2 with exceptions off
|
||||
executor: gcc10
|
||||
environment: { CMAKE_FLAGS: -DSIMDJSON_EXCEPTIONS=OFF }
|
||||
steps: [ cmake_test, cmake_install_test ]
|
||||
noexcept-clang9:
|
||||
description: Build and run tests on GCC 7 and AVX 2 with exceptions off
|
||||
executor: clang9
|
||||
noexcept-clang10:
|
||||
description: Build and run tests on Clang 10 and AVX 2 with exceptions off
|
||||
executor: clang10
|
||||
environment: { CMAKE_FLAGS: -DSIMDJSON_EXCEPTIONS=OFF }
|
||||
steps: [ cmake_test, cmake_install_test ]
|
||||
|
||||
|
@ -165,19 +193,19 @@ jobs:
|
|||
#
|
||||
|
||||
# make (test and checkperf)
|
||||
arch-haswell-gcc9:
|
||||
arch-haswell-gcc10:
|
||||
description: Build, run tests and check performance on GCC 7 with -march=haswell
|
||||
executor: gcc9
|
||||
executor: gcc10
|
||||
environment: { CXXFLAGS: -march=haswell }
|
||||
steps: [ cmake_test ]
|
||||
arch-nehalem-gcc9:
|
||||
arch-nehalem-gcc10:
|
||||
description: Build, run tests and check performance on GCC 7 with -march=nehalem
|
||||
executor: gcc9
|
||||
executor: gcc10
|
||||
environment: { CXXFLAGS: -march=nehalem }
|
||||
steps: [ cmake_test ]
|
||||
no-computed-goto-gcc9:
|
||||
no-computed-goto-gcc10:
|
||||
description: Build, run tests and check performance on GCC 7 with -DSIMDJSON_NO_COMPUTED_GOTO=true
|
||||
executor: gcc9
|
||||
executor: gcc10
|
||||
environment: { CXXFLAGS: -DSIMDJSON_NO_COMPUTED_GOTO=true }
|
||||
steps: [ cmake_test ]
|
||||
|
||||
|
@ -187,23 +215,29 @@ workflows:
|
|||
jobs:
|
||||
# full multi-implementation tests
|
||||
- gcc7
|
||||
#- gcc10 # this gets tested a lot below
|
||||
- clang6
|
||||
#- clang10 # this gets tested a lot below
|
||||
|
||||
# libc++
|
||||
# - libcpp-clang9 # disabled due to too many errors
|
||||
- libcpp-clang10
|
||||
|
||||
# full single-implementation tests
|
||||
- sanitize-gcc9
|
||||
- sanitize-clang9
|
||||
- dynamic-gcc9
|
||||
- dynamic-clang9
|
||||
- unthreaded-gcc9
|
||||
- unthreaded-clang9
|
||||
- sanitize-gcc10
|
||||
- sanitize-clang10
|
||||
- dynamic-gcc10
|
||||
- dynamic-clang10
|
||||
- unthreaded-gcc10
|
||||
- unthreaded-clang10
|
||||
|
||||
# no exceptions
|
||||
- noexcept-gcc10
|
||||
- noexcept-clang10
|
||||
|
||||
# quicker make single-implementation tests
|
||||
- arch-haswell-gcc9
|
||||
- arch-nehalem-gcc9
|
||||
- no-computed-goto-gcc9
|
||||
- arch-haswell-gcc10
|
||||
- arch-nehalem-gcc10
|
||||
- no-computed-goto-gcc10
|
||||
|
||||
# TODO add windows: https://circleci.com/docs/2.0/configuration-reference/#windows
|
||||
|
||||
|
|
|
@ -144,7 +144,7 @@ steps:
|
|||
CC: gcc
|
||||
CXX: g++
|
||||
BUILD_FLAGS: -- -j
|
||||
CTEST_FLAGS: -j4 --output-on-failure
|
||||
CTEST_FLAGS: -j4 --output-on-failure -E checkperf
|
||||
commands:
|
||||
- apt-get update -qq
|
||||
- apt-get install -y cmake
|
||||
|
|
|
@ -58,7 +58,7 @@ add_cpp_test(jsoncheck LABELS acceptance per_implementation)
|
|||
add_cpp_test(parse_many_test LABELS acceptance per_implementation)
|
||||
add_cpp_test(pointercheck LABELS acceptance per_implementation)
|
||||
add_cpp_test(extracting_values_example LABELS acceptance per_implementation)
|
||||
find_program(BASH bash)
|
||||
find_program(BASH bash)
|
||||
|
||||
|
||||
# Script tests
|
||||
|
@ -77,7 +77,8 @@ if (BASH AND (NOT MSVC)) # The scripts are not robust enough to run under Window
|
|||
#
|
||||
# Competition parse test
|
||||
#
|
||||
if (SIMDJSON_COMPETITION)
|
||||
if ((SIMDJSON_COMPETITION) AND (!SIMDJSON_SANITIZE))
|
||||
# It looks like RapidJSON does not pass the sanitizer under some conditions (Clang 10)
|
||||
add_executable(allparserscheckfile allparserscheckfile.cpp)
|
||||
target_link_libraries(allparserscheckfile competition-all)
|
||||
|
||||
|
|
Loading…
Reference in New Issue