Merge pull request #14609 from ClickHouse/update_to_gcc_10

Update default build to gcc-10
This commit is contained in:
alesapin 2020-09-15 09:49:43 +03:00 committed by GitHub
commit a75254766e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 53 additions and 22 deletions

View File

@ -23,7 +23,7 @@ option (WEVERYTHING "Enables -Weverything option with some exceptions. This is i
# Control maximum size of stack frames. It can be important if the code is run in fibers with small stack size.
# Only in release build because debug has too large stack frames.
if ((NOT CMAKE_BUILD_TYPE_UC STREQUAL "DEBUG") AND (NOT SANITIZE))
add_warning(frame-larger-than=16384)
add_warning(frame-larger-than=32768)
endif ()
if (COMPILER_CLANG)
@ -169,9 +169,16 @@ elseif (COMPILER_GCC)
# Warn if vector operation is not implemented via SIMD capabilities of the architecture
add_cxx_compile_options(-Wvector-operation-performance)
# XXX: gcc10 stuck with this option while compiling GatherUtils code
# (anyway there are builds with clang, that will warn)
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10)
# XXX: gcc10 stuck with this option while compiling GatherUtils code
# (anyway there are builds with clang, that will warn)
add_cxx_compile_options(-Wno-sequence-point)
# XXX: gcc10 false positive with this warning in MergeTreePartition.cpp
# inlined from 'void writeHexByteLowercase(UInt8, void*)' at ../src/Common/hex.h:39:11,
# inlined from 'DB::String DB::MergeTreePartition::getID(const DB::Block&) const' at ../src/Storages/MergeTree/MergeTreePartition.cpp:85:30:
# ../contrib/libc-headers/x86_64-linux-gnu/bits/string_fortified.h:34:33: error: writing 2 bytes into a region of size 0 [-Werror=stringop-overflow=]
# 34 | return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest));
# For some reason (bug in gcc?) macro 'GCC diagnostic ignored "-Wstringop-overflow"' doesn't help.
add_cxx_compile_options(-Wno-stringop-overflow)
endif()
endif ()

2
contrib/llvm vendored

@ -1 +1 @@
Subproject commit 3d6c7e916760b395908f28a1c885c8334d4fa98b
Subproject commit 8f24d507c1cfeec66d27f48fe74518fd278e2d25

View File

@ -32,8 +32,6 @@ RUN apt-get update \
curl \
gcc-9 \
g++-9 \
gcc-10 \
g++-10 \
llvm-${LLVM_VERSION} \
clang-${LLVM_VERSION} \
lld-${LLVM_VERSION} \
@ -93,5 +91,16 @@ RUN wget -nv "https://developer.arm.com/-/media/Files/downloads/gnu-a/8.3-2019.0
# Download toolchain for FreeBSD 11.3
RUN wget -nv https://clickhouse-datasets.s3.yandex.net/toolchains/toolchains/freebsd-11.3-toolchain.tar.xz
# NOTE: For some reason we have outdated version of gcc-10 in ubuntu 20.04 stable.
# Current workaround is to use latest version proposed repo. Remove as soon as
# gcc-10.2 appear in stable repo.
RUN echo 'deb http://archive.ubuntu.com/ubuntu/ focal-proposed restricted main multiverse universe' > /etc/apt/sources.list.d/proposed-repositories.list
RUN apt-get update \
&& apt-get install gcc-10 g++-10 --yes
RUN rm /etc/apt/sources.list.d/proposed-repositories.list && apt-get update
COPY build.sh /
CMD ["/bin/bash", "/build.sh"]

View File

@ -42,8 +42,6 @@ RUN export CODENAME="$(lsb_release --codename --short | tr 'A-Z' 'a-z')" \
# Libraries from OS are only needed to test the "unbundled" build (this is not used in production).
RUN apt-get update \
&& apt-get install \
gcc-10 \
g++-10 \
gcc-9 \
g++-9 \
clang-11 \
@ -75,6 +73,16 @@ RUN apt-get update \
pigz \
--yes --no-install-recommends
# NOTE: For some reason we have outdated version of gcc-10 in ubuntu 20.04 stable.
# Current workaround is to use latest version proposed repo. Remove as soon as
# gcc-10.2 appear in stable repo.
RUN echo 'deb http://archive.ubuntu.com/ubuntu/ focal-proposed restricted main multiverse universe' > /etc/apt/sources.list.d/proposed-repositories.list
RUN apt-get update \
&& apt-get install gcc-10 g++-10 --yes --no-install-recommends
RUN rm /etc/apt/sources.list.d/proposed-repositories.list && apt-get update
# This symlink required by gcc to find lld compiler
RUN ln -s /usr/bin/lld-${LLVM_VERSION} /usr/bin/ld.lld

View File

@ -93,7 +93,7 @@ def parse_env_variables(build_type, compiler, sanitizer, package_type, image_typ
cxx = cc.replace('gcc', 'g++').replace('clang', 'clang++')
if image_type == "deb":
if image_type == "deb" or image_type == "unbundled":
result.append("DEB_CC={}".format(cc))
result.append("DEB_CXX={}".format(cxx))
elif image_type == "binary":

View File

@ -83,13 +83,13 @@ struct MultiEnum
template <typename ValueType, typename = std::enable_if_t<std::is_convertible_v<ValueType, StorageType>>>
friend bool operator==(ValueType left, MultiEnum right)
{
return right == left;
return right.operator==(left);
}
template <typename L>
friend bool operator!=(L left, MultiEnum right)
{
return !(right == left);
return !(right.operator==(left));
}
private:

View File

@ -13,7 +13,14 @@ struct NegateImpl
static inline NO_SANITIZE_UNDEFINED ResultType apply(A a)
{
#if defined (__GNUC__) && __GNUC__ >= 10
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wvector-operation-performance"
#endif
return -static_cast<ResultType>(a);
#if defined (__GNUC__) && __GNUC__ >= 10
#pragma GCC diagnostic pop
#endif
}
#if USE_EMBEDDED_COMPILER

View File

@ -1,7 +1,7 @@
{
"build_config": [
{
"compiler": "gcc-9",
"compiler": "gcc-10",
"build-type": "",
"sanitizer": "",
"package-type": "deb",
@ -12,7 +12,7 @@
"with_coverage": false
},
{
"compiler": "gcc-9",
"compiler": "gcc-10",
"build-type": "",
"sanitizer": "",
"package-type": "performance",
@ -22,7 +22,7 @@
"with_coverage": false
},
{
"compiler": "gcc-9",
"compiler": "gcc-10",
"build-type": "",
"sanitizer": "",
"package-type": "binary",
@ -227,7 +227,7 @@
},
"Functional stateful tests (release)": {
"required_build_properties": {
"compiler": "gcc-9",
"compiler": "gcc-10",
"package_type": "deb",
"build_type": "relwithdebuginfo",
"sanitizer": "none",
@ -239,7 +239,7 @@
},
"Functional stateful tests (release, DatabaseAtomic)": {
"required_build_properties": {
"compiler": "gcc-9",
"compiler": "gcc-10",
"package_type": "deb",
"build_type": "relwithdebuginfo",
"sanitizer": "none",
@ -311,7 +311,7 @@
},
"Functional stateless tests (release)": {
"required_build_properties": {
"compiler": "gcc-9",
"compiler": "gcc-10",
"package_type": "deb",
"build_type": "relwithdebuginfo",
"sanitizer": "none",
@ -335,7 +335,7 @@
},
"Functional stateless tests (release, polymorphic parts enabled)": {
"required_build_properties": {
"compiler": "gcc-9",
"compiler": "gcc-10",
"package_type": "deb",
"build_type": "relwithdebuginfo",
"sanitizer": "none",
@ -347,7 +347,7 @@
},
"Functional stateless tests (release, DatabaseAtomic)": {
"required_build_properties": {
"compiler": "gcc-9",
"compiler": "gcc-10",
"package_type": "deb",
"build_type": "relwithdebuginfo",
"sanitizer": "none",
@ -443,7 +443,7 @@
},
"Compatibility check": {
"required_build_properties": {
"compiler": "gcc-9",
"compiler": "gcc-10",
"package_type": "deb",
"build_type": "relwithdebuginfo",
"sanitizer": "none",
@ -467,7 +467,7 @@
},
"Testflows check": {
"required_build_properties": {
"compiler": "gcc-9",
"compiler": "gcc-10",
"package_type": "deb",
"build_type": "relwithdebuginfo",
"sanitizer": "none",
@ -479,7 +479,7 @@
},
"Unit tests release gcc": {
"required_build_properties": {
"compiler": "gcc-9",
"compiler": "gcc-10",
"package_type": "binary",
"build_type": "relwithdebuginfo",
"sanitizer": "none",