Skip to content

Commit 89b059b

Browse files
lemireDaniel Lemire
andauthored
Testing with GCC 10 and clang 10 (simdjson#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>
1 parent bd2d0f7 commit 89b059b

File tree

3 files changed

+84
-49
lines changed

3 files changed

+84
-49
lines changed

.circleci/config.yml

Lines changed: 80 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,24 @@ executors:
2929
BUILD_FLAGS: -j
3030
CTEST_FLAGS: -j4 --output-on-failure
3131

32+
gcc10:
33+
docker:
34+
- image: conanio/gcc10
35+
environment:
36+
CXX: g++-10
37+
CC: gcc-10
38+
BUILD_FLAGS: -j
39+
CTEST_FLAGS: -j4 --output-on-failure
40+
41+
clang10:
42+
docker:
43+
- image: conanio/clang10
44+
environment:
45+
CXX: clang++-10
46+
CC: clang-10
47+
BUILD_FLAGS: -j
48+
CTEST_FLAGS: -j4 --output-on-failure
49+
3250
clang9:
3351
docker:
3452
- image: conanio/clang9
@@ -101,62 +119,72 @@ jobs:
101119
executor: gcc7
102120
environment: { CMAKE_FLAGS: -DSIMDJSON_GOOGLE_BENCHMARKS=ON }
103121
steps: [ install_cmake, cmake_test_all, cmake_install_test ]
122+
gcc10:
123+
description: Build and run tests on GCC 10 and AVX 2 with a cmake static build
124+
executor: gcc10
125+
environment: { CMAKE_FLAGS: -DSIMDJSON_GOOGLE_BENCHMARKS=ON }
126+
steps: [ cmake_test_all, cmake_install_test ]
104127
clang6:
105128
description: Build and run tests on clang 6 and AVX 2 with a cmake static build
106129
executor: clang6
107130
environment: { CMAKE_FLAGS: -DSIMDJSON_GOOGLE_BENCHMARKS=ON }
108-
steps: [ cmake_test_all, cmake_install_test ]
131+
steps: [ cmake_test, cmake_install_test ]
132+
clang10:
133+
description: Build and run tests on clang 10 and AVX 2 with a cmake static build
134+
executor: clang10
135+
environment: { CMAKE_FLAGS: -DSIMDJSON_GOOGLE_BENCHMARKS=ON }
136+
steps: [ cmake_test, cmake_install_test ]
109137
# libcpp
110-
libcpp-clang9:
111-
description: Build and run tests on clang 6 and AVX 2 with a cmake static build and libc++
112-
executor: clang9
138+
libcpp-clang10:
139+
description: Build and run tests on clang 10 and AVX 2 with a cmake static build and libc++
140+
executor: clang10
113141
environment: { CMAKE_FLAGS: -DSIMDJSON_USE_LIBCPP=ON }
114142
steps: [ cmake_test_all, cmake_install_test ]
115143
# sanitize
116-
sanitize-gcc9:
117-
description: Build and run tests on GCC 9 and AVX 2 with a cmake sanitize build
118-
executor: gcc9
144+
sanitize-gcc10:
145+
description: Build and run tests on GCC 10 and AVX 2 with a cmake sanitize build
146+
executor: gcc10
119147
environment: { CMAKE_FLAGS: -DSIMDJSON_BUILD_STATIC=OFF -DSIMDJSON_SANITIZE=ON, BUILD_FLAGS: "", CTEST_FLAGS: -j4 --output-on-failure -E checkperf }
120-
steps: [ cmake_test_all ]
121-
sanitize-clang9:
122-
description: Build and run tests on clang 6 and AVX 2 with a cmake sanitize build
123-
executor: clang9
148+
steps: [ cmake_test ]
149+
sanitize-clang10:
150+
description: Build and run tests on clang 10 and AVX 2 with a cmake sanitize build
151+
executor: clang10
124152
environment: { CMAKE_FLAGS: -DSIMDJSON_BUILD_STATIC=OFF -DSIMDJSON_SANITIZE=ON, CTEST_FLAGS: -j4 --output-on-failure -E checkperf }
125-
steps: [ cmake_test_all ]
153+
steps: [ cmake_test ]
126154

127155
# dynamic
128-
dynamic-gcc9:
129-
description: Build and run tests on GCC 7 and AVX 2 with a cmake dynamic build
130-
executor: gcc9
156+
dynamic-gcc10:
157+
description: Build and run tests on GCC 10 and AVX 2 with a cmake dynamic build
158+
executor: gcc10
131159
environment: { CMAKE_FLAGS: -DSIMDJSON_BUILD_STATIC=OFF }
132160
steps: [ cmake_test, cmake_install_test ]
133-
dynamic-clang9:
134-
description: Build and run tests on clang 6 and AVX 2 with a cmake dynamic build
135-
executor: clang9
161+
dynamic-clang10:
162+
description: Build and run tests on clang 10 and AVX 2 with a cmake dynamic build
163+
executor: clang10
136164
environment: { CMAKE_FLAGS: -DSIMDJSON_BUILD_STATIC=OFF }
137165
steps: [ cmake_test, cmake_install_test ]
138166

139167
# unthreaded
140-
unthreaded-gcc9:
141-
description: Build and run tests on GCC 7 and AVX 2 *without* threads
142-
executor: gcc9
168+
unthreaded-gcc10:
169+
description: Build and run tests on GCC 10 and AVX 2 *without* threads
170+
executor: gcc10
143171
environment: { CMAKE_FLAGS: -DSIMDJSON_ENABLE_THREADS=OFF }
144172
steps: [ cmake_test, cmake_install_test ]
145-
unthreaded-clang9:
146-
description: Build and run tests on Clang 6 and AVX 2 *without* threads
147-
executor: clang9
173+
unthreaded-clang10:
174+
description: Build and run tests on Clang 10 and AVX 2 *without* threads
175+
executor: clang10
148176
environment: { CMAKE_FLAGS: -DSIMDJSON_ENABLE_THREADS=OFF }
149177
steps: [ cmake_test, cmake_install_test ]
150178

151179
# noexcept
152-
noexcept-gcc9:
153-
description: Build and run tests on GCC 7 and AVX 2 with exceptions off
154-
executor: gcc9
180+
noexcept-gcc10:
181+
description: Build and run tests on GCC 10 and AVX 2 with exceptions off
182+
executor: gcc10
155183
environment: { CMAKE_FLAGS: -DSIMDJSON_EXCEPTIONS=OFF }
156184
steps: [ cmake_test, cmake_install_test ]
157-
noexcept-clang9:
158-
description: Build and run tests on GCC 7 and AVX 2 with exceptions off
159-
executor: clang9
185+
noexcept-clang10:
186+
description: Build and run tests on Clang 10 and AVX 2 with exceptions off
187+
executor: clang10
160188
environment: { CMAKE_FLAGS: -DSIMDJSON_EXCEPTIONS=OFF }
161189
steps: [ cmake_test, cmake_install_test ]
162190

@@ -165,19 +193,19 @@ jobs:
165193
#
166194

167195
# make (test and checkperf)
168-
arch-haswell-gcc9:
196+
arch-haswell-gcc10:
169197
description: Build, run tests and check performance on GCC 7 with -march=haswell
170-
executor: gcc9
198+
executor: gcc10
171199
environment: { CXXFLAGS: -march=haswell }
172200
steps: [ cmake_test ]
173-
arch-nehalem-gcc9:
201+
arch-nehalem-gcc10:
174202
description: Build, run tests and check performance on GCC 7 with -march=nehalem
175-
executor: gcc9
203+
executor: gcc10
176204
environment: { CXXFLAGS: -march=nehalem }
177205
steps: [ cmake_test ]
178-
no-computed-goto-gcc9:
206+
no-computed-goto-gcc10:
179207
description: Build, run tests and check performance on GCC 7 with -DSIMDJSON_NO_COMPUTED_GOTO=true
180-
executor: gcc9
208+
executor: gcc10
181209
environment: { CXXFLAGS: -DSIMDJSON_NO_COMPUTED_GOTO=true }
182210
steps: [ cmake_test ]
183211

@@ -187,23 +215,29 @@ workflows:
187215
jobs:
188216
# full multi-implementation tests
189217
- gcc7
218+
#- gcc10 # this gets tested a lot below
190219
- clang6
220+
#- clang10 # this gets tested a lot below
191221

192222
# libc++
193-
# - libcpp-clang9 # disabled due to too many errors
223+
- libcpp-clang10
194224

195225
# full single-implementation tests
196-
- sanitize-gcc9
197-
- sanitize-clang9
198-
- dynamic-gcc9
199-
- dynamic-clang9
200-
- unthreaded-gcc9
201-
- unthreaded-clang9
226+
- sanitize-gcc10
227+
- sanitize-clang10
228+
- dynamic-gcc10
229+
- dynamic-clang10
230+
- unthreaded-gcc10
231+
- unthreaded-clang10
232+
233+
# no exceptions
234+
- noexcept-gcc10
235+
- noexcept-clang10
202236

203237
# quicker make single-implementation tests
204-
- arch-haswell-gcc9
205-
- arch-nehalem-gcc9
206-
- no-computed-goto-gcc9
238+
- arch-haswell-gcc10
239+
- arch-nehalem-gcc10
240+
- no-computed-goto-gcc10
207241

208242
# TODO add windows: https://circleci.com/docs/2.0/configuration-reference/#windows
209243

.drone.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ steps:
144144
CC: gcc
145145
CXX: g++
146146
BUILD_FLAGS: -- -j
147-
CTEST_FLAGS: -j4 --output-on-failure
147+
CTEST_FLAGS: -j4 --output-on-failure -E checkperf
148148
commands:
149149
- apt-get update -qq
150150
- apt-get install -y cmake

tests/CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ add_cpp_test(jsoncheck LABELS acceptance per_implementation)
5858
add_cpp_test(parse_many_test LABELS acceptance per_implementation)
5959
add_cpp_test(pointercheck LABELS acceptance per_implementation)
6060
add_cpp_test(extracting_values_example LABELS acceptance per_implementation)
61-
find_program(BASH bash)
61+
find_program(BASH bash)
6262

6363

6464
# Script tests
@@ -77,7 +77,8 @@ if (BASH AND (NOT MSVC)) # The scripts are not robust enough to run under Window
7777
#
7878
# Competition parse test
7979
#
80-
if (SIMDJSON_COMPETITION)
80+
if ((SIMDJSON_COMPETITION) AND (!SIMDJSON_SANITIZE))
81+
# It looks like RapidJSON does not pass the sanitizer under some conditions (Clang 10)
8182
add_executable(allparserscheckfile allparserscheckfile.cpp)
8283
target_link_libraries(allparserscheckfile competition-all)
8384

0 commit comments

Comments
 (0)