summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--SConstruct38
-rw-r--r--docs/building.md2
-rw-r--r--etc/evergreen.yml324
-rw-r--r--etc/generate_subtasks_config.yml1
-rw-r--r--src/mongo/base/status_with.h8
-rw-r--r--src/mongo/db/geo/big_polygon.h3
-rw-r--r--src/mongo/db/geo/s2.h45
-rw-r--r--src/mongo/db/geo/shapes.h2
-rw-r--r--src/mongo/db/index/expression_keys_private.cpp2
-rw-r--r--src/mongo/db/query/index_bounds_builder.cpp2
-rw-r--r--src/third_party/mozjs/include/mozilla/MathAlgorithms.h8
11 files changed, 20 insertions, 415 deletions
diff --git a/SConstruct b/SConstruct
index 5244cc566db..db62e71fa9c 100644
--- a/SConstruct
+++ b/SConstruct
@@ -593,8 +593,8 @@ add_option(
add_option(
"cxx-std",
- choices=["17", "20"],
- default="17",
+ choices=["20"],
+ default="20",
help="Select the C++ language standard to build with",
)
@@ -3860,37 +3860,18 @@ def doConfigure(myenv):
conf.Finish()
if myenv.ToolchainIs('msvc'):
- if get_option('cxx-std') == "17":
- myenv.AppendUnique(CCFLAGS=['/std:c++17',
- '/Zc:lambda']) # /Zc:lambda is implied by /std:c++20
- elif get_option('cxx-std') == "20":
+ if get_option('cxx-std') == "20":
myenv.AppendUnique(CCFLAGS=['/std:c++20'])
else:
- if get_option('cxx-std') == "17":
- if not myenv.AddToCXXFLAGSIfSupported('-std=c++17'):
- myenv.ConfError('Compiler does not honor -std=c++17')
- elif get_option('cxx-std') == "20":
+ if get_option('cxx-std') == "20":
if not myenv.AddToCXXFLAGSIfSupported('-std=c++20'):
myenv.ConfError('Compiler does not honor -std=c++20')
if not myenv.AddToCFLAGSIfSupported('-std=c11'):
- myenv.ConfError("C++17 mode selected for C++ files, but can't enable C11 for C files")
+ myenv.ConfError("C++20 mode selected for C++ files, but can't enable C11 for C files")
if using_system_version_of_cxx_libraries():
- print('WARNING: System versions of C++ libraries must be compiled with C++17 support')
-
- def CheckCxx17(context):
- test_body = """
- #if __cplusplus < 201703L
- #error
- #endif
- namespace NestedNamespaceDecls::AreACXX17Feature {};
- """
-
- context.Message('Checking for C++17... ')
- ret = context.TryCompile(textwrap.dedent(test_body), ".cpp")
- context.Result(ret)
- return ret
+ print('WARNING: System versions of C++ libraries must be compiled with C++20 support')
def CheckCxx20(context):
test_body = """
@@ -3910,15 +3891,12 @@ def doConfigure(myenv):
myenv,
help=False,
custom_tests={
- 'CheckCxx17': CheckCxx17,
'CheckCxx20': CheckCxx20,
},
)
- if get_option('cxx-std') == "17" and not conf.CheckCxx17():
- myenv.ConfError('C++17 support is required to build MongoDB')
- elif get_option('cxx-std') == "20" and not conf.CheckCxx20():
- myenv.ConfError('C++20 support was not detected')
+ if get_option('cxx-std') == "20" and not conf.CheckCxx20():
+ myenv.ConfError('C++20 support is required to build MongoDB')
conf.Finish()
diff --git a/docs/building.md b/docs/building.md
index 63fbde13159..9cc95c2d77b 100644
--- a/docs/building.md
+++ b/docs/building.md
@@ -7,7 +7,7 @@ way to get started, rather than building from source.
To build MongoDB, you will need:
-* A modern C++ compiler capable of compiling C++17. One of the following is required:
+* A modern C++ compiler capable of compiling C++20. One of the following is required:
* GCC 11.3 or newer
* Clang 12.0 (or Apple XCode 13.0 Clang) or newer
* Visual Studio 2022 version 17.0 or newer (See Windows section below for details)
diff --git a/etc/evergreen.yml b/etc/evergreen.yml
index b5cf8e6b047..8f415084f8f 100644
--- a/etc/evergreen.yml
+++ b/etc/evergreen.yml
@@ -390,120 +390,6 @@ buildvariants:
tasks:
- name: tla_plus
-- &enterprise-rhel80-dynamic-gcc-debug-experimental-template
- name: &enterprise-rhel80-dynamic-gcc-cxx20-debug-experimental enterprise-rhel80-dynamic-gcc-cxx20-debug-experimental
- display_name: "~ Shared Library Enterprise RHEL 8.0 Toolchain GCC C++20 DEBUG"
- cron: "0 4 * * *" # From the ${project_nightly_cron} parameter.
- modules:
- - enterprise
- run_on:
- - rhel80-small
- expansions: &enterprise-rhel80-dynamic-gcc-debug-experimental-expansions
- additional_package_targets: >-
- archive-mongocryptd
- archive-mongocryptd-debug
- archive-mh
- archive-mh-debug
- compile_flags: >-
- --dbg=on
- --opt=on
- -j$(grep -c ^processor /proc/cpuinfo)
- --link-model=dynamic
- --variables-files=etc/scons/mongodbtoolchain_stable_gcc.vars
- --variables-files=etc/scons/scons_experimental_scheduler.vars
- --cxx-std=20
- has_packages: false
- scons_cache_scope: shared
- scons_cache_mode: all
- large_distro_name: rhel80-medium
- num_scons_link_jobs_available: 0.99
- compile_variant: *enterprise-rhel80-dynamic-gcc-cxx20-debug-experimental
- tasks: &enterprise-rhel80-dynamic-gcc-debug-experimental-tasks
- - name: compile_test_and_package_parallel_core_stream_TG
- distros:
- - rhel80-xlarge
- - name: compile_test_and_package_parallel_unittest_stream_TG
- distros:
- - rhel80-xlarge
- - name: compile_test_and_package_parallel_dbtest_stream_TG
- distros:
- - rhel80-xlarge
- - name: compile_integration_and_test_parallel_stream_TG
- distros:
- - rhel80-large
- - name: test_api_version_compatibility
- - name: .aggfuzzer !.multiversion !.feature_flag_guarded
- - name: .aggregation !.multiversion !.feature_flag_guarded
- - name: audit
- - name: .auth !.multiversion
- - name: .causally_consistent !.sharding
- - name: .change_streams !.multiversion
- - name: .misc_js !.multiversion
- - name: .concurrency !.large !.ubsan !.no_txns !.debug_only !.multiversion
- - name: .concurrency .large !.ubsan !.no_txns !.debug_only !.multiversion
- distros:
- - rhel80-xlarge
- - name: disk_wiredtiger
- - name: .encrypt !.multiversion
- - name: idl_tests
- - name: jsCore
- distros:
- - rhel80-xlarge
- - name: .jscore .common !jsCore !.multiversion
- - name: jsCore_min_batch_repeat_queries_ese_gsm
- - name: jsCore_txns_large_txns_format
- - name: json_schema
- - name: libunwind_tests
- - name: mqlrun
- - name: .multi_shard !.multiversion
- - name: multi_stmt_txn_jscore_passthrough_with_migration_gen
- - name: .read_write_concern .large !.multiversion
- distros:
- - rhel80-xlarge
- - name: .read_write_concern !.large !.multiversion
- - name: .replica_sets !.encrypt !.auth !.multiversion
- distros:
- - rhel80-xlarge
- - name: replica_sets_api_version_jscore_passthrough_gen
- - name: replica_sets_reconfig_jscore_passthrough_gen
- - name: retryable_writes_jscore_passthrough_gen
- - name: .read_only !.multiversion
- - name: sasl
- - name: search
- - name: search_auth
- - name: search_pinned_connections_auth
- - name: search_ssl
- - name: session_jscore_passthrough
- - name: .sharding .jscore !.wo_snapshot !.multi_stmt !.multiversion
- - name: sharding_api_version_jscore_passthrough_gen
- - name: .sharding .txns !.multiversion
- - name: .sharding .common !.multiversion !.jstestfuzz
- - name: .stitch
- - name: secondary_reads_passthrough_gen
- - name: server_discovery_and_monitoring_json_test_TG
- - name: .serverless !.multiversion
- distros:
- - rhel80-xlarge
- - name: server_selection_json_test_TG
- distros:
- - rhel80-xlarge
- - name: generate_buildid_to_debug_symbols_mapping
-
-- <<: *enterprise-rhel80-dynamic-gcc-debug-experimental-template
- name: &enterprise-rhel80-dynamic-clang-cxx20-debug-experimental enterprise-rhel80-dynamic-clang-cxx20-debug-experimental
- display_name: "~ Shared Library Enterprise RHEL 8.0 Toolchain Clang C++20 DEBUG"
- expansions:
- <<: *enterprise-rhel80-dynamic-gcc-debug-experimental-expansions
- compile_flags: >-
- --dbg=on
- --opt=on
- -j$(grep -c ^processor /proc/cpuinfo)
- --link-model=dynamic
- --variables-files=etc/scons/mongodbtoolchain_stable_clang.vars
- --variables-files=etc/scons/scons_experimental_scheduler.vars
- --cxx-std=20
- compile_variant: *enterprise-rhel80-dynamic-clang-cxx20-debug-experimental
-
- name: &enterprise-rhel-80-64-bit-coverage enterprise-rhel-80-64-bit-coverage
display_name: "~ Enterprise RHEL 8.0 DEBUG Code Coverage"
modules:
@@ -603,141 +489,6 @@ buildvariants:
tasks:
*enterprise-rhel-80-64-bit-coverage-tasks
-- <<: *enterprise-rhel80-dynamic-gcc-debug-experimental-template
- name: enterprise-rhel80-dynamic-gcc-cxx20-debug-pm-1328-experimental
- display_name: "~ Shared Library Enterprise RHEL 8.0 GCC C++20 DEBUG + PM-1328"
- cron: "0 4 * * 0" # From the ${project_weekly_cron} parameter
- expansions:
- <<: *enterprise-rhel80-dynamic-gcc-debug-experimental-expansions
- compile_flags: >-
- --dbg=on
- --opt=on
- -j$(grep -c ^processor /proc/cpuinfo)
- --link-model=dynamic
- --variables-files=etc/scons/mongodbtoolchain_stable_gcc.vars
- --cxx-std=20
- --experimental-optimization=*
- --experimental-runtime-hardening=*
- --disable-warnings-as-errors
-
-- <<: *enterprise-rhel80-dynamic-gcc-debug-experimental-template
- name: &enterprise-rhel80-dynamic-clang-cxx20-debug-pm-1328-experimental enterprise-rhel80-dynamic-clang-cxx20-debug-pm-1328-experimental
- display_name: "~ Shared Library Enterprise RHEL 8.0 Clang C++20 DEBUG + PM-1328"
- cron: "0 4 * * 0" # From the ${project_weekly_cron} parameter
- expansions:
- <<: *enterprise-rhel80-dynamic-gcc-debug-experimental-expansions
- compile_flags: >-
- --dbg=on
- --opt=on
- -j$(grep -c ^processor /proc/cpuinfo)
- --link-model=dynamic
- --variables-files=etc/scons/mongodbtoolchain_stable_clang.vars
- --cxx-std=20
- --experimental-optimization=*
- --experimental-runtime-hardening=*
- compile_variant: *enterprise-rhel80-dynamic-clang-cxx20-debug-pm-1328-experimental
-
-- <<: *enterprise-rhel80-dynamic-gcc-debug-experimental-template
- name: &enterprise-rhel80-gcc-cxx20-pm-1328-experimental enterprise-rhel80-gcc-cxx20-pm-1328-experimental
- display_name: "~ Enterprise RHEL 8.0 Toolchain GCC C++20 + PM-1328"
- cron: "0 4 * * 0" # From the ${project_weekly_cron} parameter
- expansions:
- <<: *enterprise-rhel80-dynamic-gcc-debug-experimental-expansions
- compile_flags: >-
- --opt=on
- -j$(grep -c ^processor /proc/cpuinfo)
- --variables-files=etc/scons/mongodbtoolchain_stable_gcc.vars
- --cxx-std=20
- --experimental-optimization=*
- --experimental-runtime-hardening=*
- --disable-warnings-as-errors
- --link-model=dynamic
- compile_variant: *enterprise-rhel80-gcc-cxx20-pm-1328-experimental
- tasks: &enterprise-rhel80-dynamic-gcc-debug-experimental-tasks-no-unittests
- - name: compile_test_and_package_parallel_core_stream_TG
- distros:
- - rhel80-xlarge
- - name: compile_test_and_package_parallel_dbtest_stream_TG
- distros:
- - rhel80-xlarge
- - name: compile_integration_and_test_parallel_stream_TG
- distros:
- - rhel80-large
- - name: test_api_version_compatibility
- - name: .aggfuzzer !.multiversion !.feature_flag_guarded
- - name: .aggregation !.multiversion !.feature_flag_guarded
- - name: audit
- - name: .auth !.multiversion
- - name: .causally_consistent !.sharding
- - name: .change_streams !.multiversion
- - name: .misc_js !.multiversion
- - name: .concurrency !.large !.ubsan !.no_txns !.debug_only !.multiversion
- - name: .concurrency .large !.ubsan !.no_txns !.debug_only !.multiversion
- distros:
- - rhel80-xlarge
- - name: disk_wiredtiger
- - name: .encrypt !.multiversion
- - name: idl_tests
- - name: jsCore
- distros:
- - rhel80-xlarge
- - name: .jscore .common !jsCore !.multiversion
- - name: jsCore_min_batch_repeat_queries_ese_gsm
- - name: jsCore_txns_large_txns_format
- - name: json_schema
- - name: libunwind_tests
- - name: mqlrun
- - name: .multi_shard !.multiversion
- - name: multi_stmt_txn_jscore_passthrough_with_migration_gen
- - name: .read_write_concern .large !.multiversion
- distros:
- - rhel80-xlarge
- - name: .read_write_concern !.large !.multiversion
- - name: .replica_sets !.encrypt !.auth !.multiversion
- distros:
- - rhel80-xlarge
- - name: replica_sets_api_version_jscore_passthrough_gen
- - name: replica_sets_reconfig_jscore_passthrough_gen
- - name: retryable_writes_jscore_passthrough_gen
- - name: .read_only !.multiversion
- - name: sasl
- - name: search
- - name: search_auth
- - name: search_pinned_connections_auth
- - name: search_ssl
- - name: session_jscore_passthrough
- - name: .sharding .jscore !.wo_snapshot !.multi_stmt !.multiversion
- - name: sharding_api_version_jscore_passthrough_gen
- - name: .sharding .txns !.multiversion
- - name: .sharding .common !.multiversion
- - name: .stitch
- - name: secondary_reads_passthrough_gen
- - name: server_discovery_and_monitoring_json_test_TG
- - name: .serverless !.multiversion
- distros:
- - rhel80-xlarge
- - name: server_selection_json_test_TG
- distros:
- - rhel80-xlarge
- - name: generate_buildid_to_debug_symbols_mapping
-
-
-- <<: *enterprise-rhel80-dynamic-gcc-debug-experimental-template
- name: &enterprise-rhel80-clang-cxx20-pm-1328-experimental enterprise-rhel80-clang-cxx20-pm-1328-experimental
- display_name: "~ Enterprise RHEL 8.0 Toolchain Clang C++20 + PM-1328"
- cron: "0 4 * * 0" # From the ${project_weekly_cron} parameter
- expansions:
- <<: *enterprise-rhel80-dynamic-gcc-debug-experimental-expansions
- compile_flags: >-
- --opt=on
- -j$(grep -c ^processor /proc/cpuinfo)
- --variables-files=etc/scons/mongodbtoolchain_stable_clang.vars
- --cxx-std=20
- --experimental-optimization=*
- --experimental-runtime-hardening=*
- compile_variant: *enterprise-rhel80-clang-cxx20-pm-1328-experimental
- tasks: *enterprise-rhel80-dynamic-gcc-debug-experimental-tasks-no-unittests
-
- name: &stm-daily-cron stm-daily-cron
modules:
- enterprise
@@ -981,74 +732,6 @@ buildvariants:
- name: telemetry_passthrough
- name: unittest_shell_hang_analyzer_gen
-- name: &enterprise-windows-cxx20-debug-experimental enterprise-windows-cxx20-debug-experimental
- display_name: "~ Enterprise Windows C++20 DEBUG"
- cron: "0 4 * * *" # From the ${project_nightly_cron} parameter.
- modules:
- - enterprise
- run_on:
- - windows-vsCurrent-small
- expansions:
- exe: ".exe"
- compile_variant: *enterprise-windows-cxx20-debug-experimental
- additional_package_targets: >-
- archive-mongocryptd
- archive-mongocryptd-debug
- msi
- archive-mh
- archive-mh-debug
- content_type: application/zip
- compile_flags: >-
- --dbg=on
- --opt=on
- --ssl
- MONGO_DISTMOD=windows
- CPPPATH="c:/sasl/include"
- LIBPATH="c:/sasl/lib"
- -j$(bc <<< "$(grep -c '^processor' /proc/cpuinfo) / 1.5")
- --win-version-min=win10
- --cxx-std=20
- num_scons_link_jobs_available: 0.25
- python: '/cygdrive/c/python/python37/python.exe'
- ext: zip
- scons_cache_scope: shared
- multiversion_platform: windows
- multiversion_edition: enterprise
- jstestfuzz_num_generated_files: 35
- target_resmoke_time: 20
- max_sub_suites: 3
- large_distro_name: windows-vsCurrent-large
- test_flags: *windows_common_test_excludes
- exec_timeout_secs: 14400 # 3 hour timeout
- tasks:
- - name: compile_test_and_package_serial_TG
- distros:
- - windows-vsCurrent-large
- - name: .aggfuzzer !.feature_flag_guarded
- - name: .aggregation !.auth !.encrypt !.unwind !.feature_flag_guarded
- - name: auth_gen
- - name: causally_consistent_jscore_txns_passthrough
- - name: .misc_js
- # Some concurrency workloads require a lot of memory, so we use machines
- # with more RAM for these suites.
- - name: .concurrency !.ubsan !.no_txns !.kill_terminate !.common !.debug_only
- distros:
- - windows-vsCurrent-large
- - name: .concurrency .common
- - name: disk_wiredtiger
- - name: .jscore .common !.auth
- - name: json_schema
- - name: .query_fuzzer
- - name: .read_write_concern
- - name: replica_sets_gen
- - name: replica_sets_jscore_passthrough_gen
- - name: .sharding .jscore !.wo_snapshot !.multi_stmt !.multiversion
- - name: .sharding .txns !.multiversion
- - name: .sharding .common !.csrs !.multiversion !.gcm
- - name: .ssl
- - name: .stitch
- - name: .updatefuzzer !.multiversion
-
- name: &enterprise-windows-debug-unoptimized enterprise-windows-debug-unoptimized
display_name: "Enterprise Windows DEBUG (Unoptimized)"
cron: "0 4 * * *" # From the ${project_nightly_cron} parameter.
@@ -1166,15 +849,15 @@ buildvariants:
- name: .crypt
- name: generate_buildid_to_debug_symbols_mapping
-- name: &enterprise-macos-cxx20 enterprise-macos-cxx20
- display_name: "Enterprise macOS C++20 DEBUG"
+- name: &enterprise-macos enterprise-macos
+ display_name: "Enterprise macOS DEBUG"
cron: "0 4 * * *" # From the ${project_nightly_cron} parameter.
modules:
- enterprise
run_on:
- macos-1100
expansions:
- compile_variant: *enterprise-macos-cxx20
+ compile_variant: *enterprise-macos
test_flags: --excludeWithAnyTags=incompatible_with_macos,requires_gcm
compile_env: DEVELOPER_DIR=/Applications/Xcode13.app
compile_flags: >-
@@ -1184,7 +867,6 @@ buildvariants:
-j$(sysctl -n hw.logicalcpu)
--libc++
--variables-files=etc/scons/xcode_macosx.vars
- --cxx-std=20
resmoke_jobs_max: 6
num_scons_link_jobs_available: 0.99
tasks:
diff --git a/etc/generate_subtasks_config.yml b/etc/generate_subtasks_config.yml
index bf2471d4012..c71b3cf9b54 100644
--- a/etc/generate_subtasks_config.yml
+++ b/etc/generate_subtasks_config.yml
@@ -14,7 +14,6 @@ build_variant_large_distro_exceptions:
- enterprise-linux-64-amazon-ami
- enterprise-macos
- enterprise-macos-rosetta-2
- - enterprise-macos-cxx20
- enterprise-macos-arm64
- enterprise-rhel-67-s390x
- enterprise-rhel-70-64-bit
diff --git a/src/mongo/base/status_with.h b/src/mongo/base/status_with.h
index 0781fd99480..111612a7f70 100644
--- a/src/mongo/base/status_with.h
+++ b/src/mongo/base/status_with.h
@@ -248,22 +248,22 @@ bool operator!=(const Status& status, const StatusWith<T>& sw) {
//
template <typename T>
-bool operator==(const StatusWith<T>& sw, const ErrorCodes::Error code) {
+bool operator==(const StatusWith<T>& sw, ErrorCodes::Error code) {
return sw.getStatus() == code;
}
template <typename T>
-bool operator==(const ErrorCodes::Error code, const StatusWith<T>& sw) {
+bool operator==(ErrorCodes::Error code, const StatusWith<T>& sw) {
return code == sw.getStatus();
}
template <typename T>
-bool operator!=(const StatusWith<T>& sw, const ErrorCodes::Error code) {
+bool operator!=(const StatusWith<T>& sw, ErrorCodes::Error code) {
return !(sw == code);
}
template <typename T>
-bool operator!=(const ErrorCodes::Error code, const StatusWith<T>& sw) {
+bool operator!=(ErrorCodes::Error code, const StatusWith<T>& sw) {
return !(code == sw);
}
diff --git a/src/mongo/db/geo/big_polygon.h b/src/mongo/db/geo/big_polygon.h
index 03b30ef8319..3e59160b90b 100644
--- a/src/mongo/db/geo/big_polygon.h
+++ b/src/mongo/db/geo/big_polygon.h
@@ -29,6 +29,7 @@
#pragma once
+#include <s2.h>
#include <s2cap.h>
#include <s2cell.h>
#include <s2loop.h>
@@ -37,8 +38,6 @@
#include <s2region.h>
#include <vector>
-#include "mongo/db/geo/s2.h"
-
namespace mongo {
// Simple GeoJSON polygon with a custom CRS identifier as having a strict winding order.
diff --git a/src/mongo/db/geo/s2.h b/src/mongo/db/geo/s2.h
deleted file mode 100644
index f86087538e3..00000000000
--- a/src/mongo/db/geo/s2.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * Copyright (C) 2018-present MongoDB, Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the Server Side Public License, version 1,
- * as published by MongoDB, Inc.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * Server Side Public License for more details.
- *
- * You should have received a copy of the Server Side Public License
- * along with this program. If not, see
- * <http://www.mongodb.com/licensing/server-side-public-license>.
- *
- * As a special exception, the copyright holders give permission to link the
- * code of portions of this program with the OpenSSL library under certain
- * conditions as described in each individual source file and distribute
- * linked combinations including the program with the OpenSSL library. You
- * must comply with the Server Side Public License in all respects for
- * all of the code used other than as permitted herein. If you modify file(s)
- * with this exception, you may extend this exception to your version of the
- * file(s), but you are not obligated to do so. If you do not wish to do so,
- * delete this exception statement from your version. If you delete this
- * exception statement from all source files in the program, then also delete
- * it in the license file.
- */
-
-#pragma once
-
-/*
- * This file's purpose is to confine the suppression of the Clang warning for
- * mismatched-tags (struct vs class) in only the s2.h file
- */
-
-#ifdef __clang__
-#pragma GCC diagnostic ignored "-Wmismatched-tags"
-#endif
-
-#include <s2.h>
-
-#ifdef __clang__
-#pragma GCC diagnostic pop
-#endif
diff --git a/src/mongo/db/geo/shapes.h b/src/mongo/db/geo/shapes.h
index 96c645900ca..031ff0117c1 100644
--- a/src/mongo/db/geo/shapes.h
+++ b/src/mongo/db/geo/shapes.h
@@ -30,6 +30,7 @@
#pragma once
#include <cmath>
+#include <s2.h>
#include <s2cap.h>
#include <s2cell.h>
#include <s2latlng.h>
@@ -40,7 +41,6 @@
#include "mongo/base/clonable_ptr.h"
#include "mongo/db/geo/big_polygon.h"
-#include "mongo/db/geo/s2.h"
#include "mongo/db/jsobj.h"
#ifndef M_PI
diff --git a/src/mongo/db/index/expression_keys_private.cpp b/src/mongo/db/index/expression_keys_private.cpp
index 1d574121050..422526c5532 100644
--- a/src/mongo/db/index/expression_keys_private.cpp
+++ b/src/mongo/db/index/expression_keys_private.cpp
@@ -30,6 +30,7 @@
#include "mongo/db/index/expression_keys_private.h"
+#include <s2.h>
#include <s2cell.h>
#include <s2regioncoverer.h>
#include <utility>
@@ -43,7 +44,6 @@
#include "mongo/db/geo/geoconstants.h"
#include "mongo/db/geo/geometry_container.h"
#include "mongo/db/geo/geoparser.h"
-#include "mongo/db/geo/s2.h"
#include "mongo/db/index/2d_common.h"
#include "mongo/db/index/s2_common.h"
#include "mongo/db/index_names.h"
diff --git a/src/mongo/db/query/index_bounds_builder.cpp b/src/mongo/db/query/index_bounds_builder.cpp
index 804bdef8466..8f854b2f550 100644
--- a/src/mongo/db/query/index_bounds_builder.cpp
+++ b/src/mongo/db/query/index_bounds_builder.cpp
@@ -32,13 +32,13 @@
#include <cmath>
#include <limits>
+#include <s2.h>
#include <s2cell.h>
#include <s2regioncoverer.h>
#include "mongo/base/string_data.h"
#include "mongo/bson/bsontypes.h"
#include "mongo/db/geo/geoconstants.h"
-#include "mongo/db/geo/s2.h"
#include "mongo/db/index/expression_params.h"
#include "mongo/db/index/s2_common.h"
#include "mongo/db/matcher/expression_geo.h"
diff --git a/src/third_party/mozjs/include/mozilla/MathAlgorithms.h b/src/third_party/mozjs/include/mozilla/MathAlgorithms.h
index 8c64685ef1d..a35de339af6 100644
--- a/src/third_party/mozjs/include/mozilla/MathAlgorithms.h
+++ b/src/third_party/mozjs/include/mozilla/MathAlgorithms.h
@@ -199,14 +199,6 @@ inline uint_fast8_t CountTrailingZeroes64(uint64_t aValue) {
#elif defined(__clang__) || defined(__GNUC__)
-# if defined(__clang__)
-# if !__has_builtin(__builtin_ctz) || !__has_builtin(__builtin_clz)
-# error "A clang providing __builtin_c[lt]z is required to build"
-# endif
-# else
-// gcc has had __builtin_clz and friends since 3.4: no need to check.
-# endif
-
inline uint_fast8_t CountLeadingZeroes32(uint32_t aValue) {
return static_cast<uint_fast8_t>(__builtin_clz(aValue));
}