Skip to content

Compile warnings/errors under Apple clang 12.0.5 #1887

@JaySon-Huang

Description

@JaySon-Huang

I update my macOS to the latest version and find that it can not compile TiFlash

macOS Big Sur
Version 11.3.1 (20E241)

>  uname -a
Darwin JaySon-Pro.local 20.4.0 Darwin Kernel Version 20.4.0: Thu Apr 22 21:46:47 PDT 2021; root:xnu-7195.101.2~1/RELEASE_X86_64 x86_64

>  clang++ --version
Apple clang version 12.0.5 (clang-1205.0.22.9)
Target: x86_64-apple-darwin20.4.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
In file included from /Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/IO/CompressionSettings.cpp:1:
In file included from /Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Interpreters/Settings.h:4:
In file included from /Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Core/Field.h:8:
In file included from /Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Common/Decimal.h:6:
In file included from /Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Core/Types.h:33:
/Users/jayson/Projects/pingcap/tiflash/storage/ch/contrib/boost/boost/multiprecision/cpp_int.hpp:498:41: error: definition of implicit copy assignment operator for 'cpp_int_base<256, 256, boost::multiprecision::signed_magnitude, boost::multiprecision::checked, void, false>' is deprecated because it has a user-declared copy constructor [-Werror,-Wdeprecated-copy]
   BOOST_MP_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(const cpp_int_base& o)BOOST_NOEXCEPT
                                        ^
/Users/jayson/Projects/pingcap/tiflash/storage/ch/contrib/boost/boost/multiprecision/cpp_int.hpp:1179:38: note: in implicit copy assignment operator for 'boost::multiprecision::backends::cpp_int_base<256, 256, boost::multiprecision::signed_magnitude, boost::multiprecision::checked, void, false>' first required here
      *static_cast<base_type*>(this) = static_cast<base_type&&>(o);
                                     ^
/Users/jayson/Projects/pingcap/tiflash/storage/ch/contrib/boost/boost/multiprecision/number.hpp:209:17: note: in instantiation of member function 'boost::multiprecision::backends::cpp_int_backend<256, 256, boost::multiprecision::signed_magnitude, boost::multiprecision::checked, void>::operator=' requested here
      m_backend = static_cast<Backend&&>(r.m_backend);
                ^
/Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Common/Decimal.h:205:23: note: in instantiation of member function 'boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<256, 256, boost::multiprecision::signed_magnitude, boost::multiprecision::checked, void>, boost::multiprecision::et_off>::operator=' requested here
            number[i] = number[i-1] * 10 + 9;
                      ^
1 error generated.
make[3]: *** [dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/CompressionSettings.cpp.o] Error 1
make[2]: *** [dbms/CMakeFiles/clickhouse_common_io.dir/all] Error 2
In file included from /Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Flash/BatchCoprocessorHandler.cpp:6:
In file included from /Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Storages/StorageMergeTree.h:9:
In file included from /Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Storages/MergeTree/MergeTreeData.h:20:
In file included from /Users/jayson/Projects/pingcap/tiflash/storage/ch/contrib/boost/boost/multi_index_container.hpp:20:
/Users/jayson/Projects/pingcap/tiflash/storage/ch/contrib/boost/boost/detail/allocator_utilities.hpp:125:11: error: 'rebind<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<std::__1::shared_ptr<const DB::MergeTreeDataPart>, std::__1::allocator<std::__1::shared_ptr<const DB::MergeTreeDataPart>>>>>>' is deprecated [-Werror,-Wdeprecated-declarations]
          rebind<Type>::other other;
          ^
/Users/jayson/Projects/pingcap/tiflash/storage/ch/contrib/boost/boost/detail/allocator_utilities.hpp:133:7: note: in instantiation of template class 'boost::detail::allocator::rebinder<std::__1::allocator<std::__1::shared_ptr<const DB::MergeTreeDataPart>>>::result<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<std::__1::shared_ptr<const DB::MergeTreeDataPart>, std::__1::allocator<std::__1::shared_ptr<const DB::MergeTreeDataPart>>>>>>' requested here
      BOOST_NESTED_TEMPLATE result<Type>::other type;
      ^
/Users/jayson/Projects/pingcap/tiflash/storage/ch/contrib/boost/boost/config/detail/suffix.hpp:437:33: note: expanded from macro 'BOOST_NESTED_TEMPLATE'
#  define BOOST_NESTED_TEMPLATE template
                                ^
/Users/jayson/Projects/pingcap/tiflash/storage/ch/contrib/boost/boost/mpl/eval_if.hpp:60:22: note: in instantiation of template class 'boost::detail::allocator::compliant_allocator_rebind_to<std::__1::allocator<std::__1::shared_ptr<const DB::MergeTreeDataPart>>, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<std::__1::shared_ptr<const DB::MergeTreeDataPart>, std::__1::allocator<std::__1::shared_ptr<const DB::MergeTreeDataPart>>>>>>' requested here
    typedef typename f_::type type;
                     ^
/Users/jayson/Projects/pingcap/tiflash/storage/ch/contrib/boost/boost/detail/allocator_utilities.hpp:140:3: note: in instantiation of template class 'boost::mpl::eval_if_c<false, boost::detail::allocator::partial_std_allocator_rebind_to<std::__1::allocator<std::__1::shared_ptr<const DB::MergeTreeDataPart>>, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<std::__1::shared_ptr<const DB::MergeTreeDataPart>, std::__1::allocator<std::__1::shared_ptr<const DB::MergeTreeDataPart>>>>>>, boost::detail::allocator::compliant_allocator_rebind_to<std::__1::allocator<std::__1::shared_ptr<const DB::MergeTreeDataPart>>, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<std::__1::shared_ptr<const DB::MergeTreeDataPart>, std::__1::allocator<std::__1::shared_ptr<const DB::MergeTreeDataPart>>>>>>>' requested here
  mpl::eval_if_c<
  ^
/Users/jayson/Projects/pingcap/tiflash/storage/ch/contrib/boost/boost/multi_index_container.hpp:86:40: note: in instantiation of template class 'boost::detail::allocator::rebind_to<std::__1::allocator<std::__1::shared_ptr<const DB::MergeTreeDataPart>>, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<std::__1::shared_ptr<const DB::MergeTreeDataPart>, std::__1::allocator<std::__1::shared_ptr<const DB::MergeTreeDataPart>>>>>>' requested here
    typename boost::detail::allocator::rebind_to<
                                       ^
/Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Storages/MergeTree/MergeTreeData.h:612:22: note: in instantiation of template class 'boost::multi_index::multi_index_container<std::__1::shared_ptr<const DB::MergeTreeDataPart>, boost::multi_index::indexed_by<boost::multi_index::ordered_unique<boost::multi_index::tag<DB::MergeTreeData::TagByInfo>, boost::multi_index::global_fun<const std::__1::shared_ptr<const DB::MergeTreeDataPart> &, const DB::MergeTreePartInfo &, &DB::MergeTreeData::dataPartPtrToInfo>>, boost::multi_index::ordered_unique<boost::multi_index::tag<DB::MergeTreeData::TagByStateAndInfo>, boost::multi_index::global_fun<const std::__1::shared_ptr<const DB::MergeTreeDataPart> &, DB::MergeTreeData::DataPartStateAndInfo, &DB::MergeTreeData::dataPartPtrToStateAndInfo>, DB::MergeTreeData::LessStateDataPart>>>' requested here
    DataPartsIndexes data_parts_indexes;
                     ^
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/memory:1764:33: note: 'rebind<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<std::__1::shared_ptr<const DB::MergeTreeDataPart>, std::__1::allocator<std::__1::shared_ptr<const DB::MergeTreeDataPart>>>>>>' has been explicitly marked deprecated here
    template <class _Up> struct _LIBCPP_DEPRECATED_IN_CXX17 rebind {typedef allocator<_Up> other;};
                                ^
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/__config:1057:39: note: expanded from macro '_LIBCPP_DEPRECATED_IN_CXX17'
#  define _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_DEPRECATED
                                      ^
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/__config:1034:48: note: expanded from macro '_LIBCPP_DEPRECATED'
#    define _LIBCPP_DEPRECATED __attribute__ ((deprecated))
                                               ^
In file included from In file included from /Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Flash/BatchCoprocessorHandler.cpp/Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Flash/CoprocessorHandler.cpp::68:
:
In file included from In file included from /Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Storages/StorageMergeTree.h/Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Storages/StorageMergeTree.h::99:
:
In file included from In file included from /Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Storages/MergeTree/MergeTreeData.h/Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Storages/MergeTree/MergeTreeData.h::2222:
:
In file included from In file included from /Users/jayson/Projects/pingcap/tiflash/storage/ch/contrib/boost/boost/multi_index_container.hpp/Users/jayson/Projects/pingcap/tiflash/storage/ch/contrib/boost/boost/multi_index_container.hpp::2020:
:
/Users/jayson/Projects/pingcap/tiflash/storage/ch/contrib/boost/boost/detail/allocator_utilities.hpp/Users/jayson/Projects/pingcap/tiflash/storage/ch/contrib/boost/boost/detail/allocator_utilities.hpp:125::11:125 :11: error: 'rebind<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<std::__1::shared_ptr<const DB::MergeTreeDataPart>, std::__1::allocator<std::__1::shared_ptr<const DB::MergeTreeDataPart>>>>>>' is deprecated [-Werror,-Wdeprecated-declarations]error: 
'rebind<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<std::__1::shared_ptr<const DB::MergeTreeDataPart>, std::__1::allocator<std::__1::shared_ptr<const DB::MergeTreeDataPart>>>>>>' is deprecated [-Werror,-Wdeprecated-declarations]
          rebind<Type>::other other;
          ^
          rebind<Type>::other other;
          ^
In file included from /Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/DataStreams/RangesFilterBlockInputStream.cpp:4:
/Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/DataStreams/PKColumnIterator.hpp:15:24: error: definition of implicit copy constructor for 'PKColumnIterator' is deprecated because it has a user-declared copy assignment operator [-Werror,-Wdeprecated-copy]
    PKColumnIterator & operator=(const PKColumnIterator & itr)
                       ^
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/algorithm:4226:37: note: in implicit copy constructor for 'DB::PKColumnIterator' first required here
    return __lower_bound<_Comp_ref>(__first, __last, __value_, __comp);
                                    ^
/Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/DataStreams/RangesFilterBlockInputStream.cpp:44:35: note: in instantiation of function template specialization 'std::__1::lower_bound<DB::PKColumnIterator, DB::TiKVHandle::Handle<long long>, bool (*)(const unsigned long long &, const DB::TiKVHandle::Handle<long long> &)>' requested here
                size_t pos = std::lower_bound(PKColumnIterator(0, column), PKColumnIterator(rows, column), ranges.second, func_cmp).pos;
                                  ^
1 error generated.
make[3]: *** [dbms/CMakeFiles/dbms.dir/src/DataStreams/RangesFilterBlockInputStream.cpp.o] Error 1
In file included from /Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Storages/DeltaMerge/Index/MinMaxIndex.cpp:9:
In file included from /Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Storages/DeltaMerge/DeltaMergeHelpers.h:12:
In file included from /Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Functions/FunctionsConversion.h:34:
In file included from /Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Common/FieldVisitors.h:4:
/Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Core/AccurateComparison.h:265:12: error: no matching function for call to 'equalsOpTmpl'
    return equalsOpTmpl(a, b);
           ^~~~~~~~~~~~
/Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Core/AccurateComparison.h:445:53: note: in instantiation of function template specialization 'accurate::equalsOp<DB::UInt128, unsigned char>' requested here
    static UInt8 apply(A a, B b) { return accurate::equalsOp(a, b); }
                                                    ^
/Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Storages/DeltaMerge/Index/ValueComparison.h:199:32: note: in instantiation of member function 'DB::EqualsOp<DB::UInt128, unsigned char>::apply' requested here
        res = Op<Left, Right>::apply(left, right);
                               ^
/Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Storages/DeltaMerge/Index/ValueComparison.h:130:22: note: in instantiation of function template specialization 'DB::DM::ValueComparision<EqualsOp>::compareNumberLeftType<DB::Field::Types::UInt128, DB::UInt128, unsigned char>' requested here
                  || compareNumberLeftType<Field::Types::Which::UInt128, UInt128>(left_field, right, res)
                     ^
/Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Storages/DeltaMerge/Index/ValueComparison.h:56:18: note: in instantiation of function template specialization 'DB::DM::ValueComparision<EqualsOp>::compare<DB::DM::ValueComparision<EqualsOp>::Number, unsigned char, DB::DM::ValueComparision<EqualsOp>::Number>' requested here
            ok = compare<Number, Right>(left_field, right_type, right, res);
                 ^
/Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Storages/DeltaMerge/Index/RoughCheck.h:33:10: note: in instantiation of function template specialization 'DB::DM::ValueComparision<EqualsOp>::compare<unsigned char>' requested here
    if (!IS_LEGAL(v, min))
         ^
/Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Storages/DeltaMerge/Index/RoughCheck.h:22:58: note: expanded from macro 'IS_LEGAL'
#define IS_LEGAL(lef_field, right_value) (Cmp<EqualsOp>::compare(lef_field, type, right_value) != FAILED)
                                                         ^
/Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Storages/DeltaMerge/Index/MinMaxIndex.cpp:132:23: note: in instantiation of function template specialization 'DB::DM::RoughCheck::checkEqual<unsigned char>' requested here
    FOR_NUMERIC_TYPES(DISPATCH)
                      ^
/Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Core/AccurateComparison.h:79:46: note: candidate template ignored: requirement 'is_le_int_vs_uint<DB::UInt128, unsigned char>' was not satisfied [with TInt = DB::UInt128, TUInt = unsigned char]
inline bool_if_le_int_vs_uint_t<TInt, TUInt> equalsOpTmpl(TInt a, TUInt b)
                                             ^
/Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Core/AccurateComparison.h:85:46: note: candidate template ignored: requirement 'is_le_int_vs_uint<unsigned char, DB::UInt128>' was not satisfied [with TUInt = DB::UInt128, TInt = unsigned char]
inline bool_if_le_int_vs_uint_t<TInt, TUInt> equalsOpTmpl(TUInt a, TInt b)
                                             ^
/Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Core/AccurateComparison.h:111:44: note: candidate template ignored: requirement 'is_gt_int_vs_uint<DB::UInt128, unsigned char>' was not satisfied [with TInt = DB::UInt128, TUInt = unsigned char]
inline bool_if_gt_int_vs_uint<TInt, TUInt> equalsOpTmpl(TInt a, TUInt b)
                                           ^
/Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Core/AccurateComparison.h:117:44: note: candidate template ignored: requirement 'is_gt_int_vs_uint<unsigned char, DB::UInt128>' was not satisfied [with TInt = unsigned char, TUInt = DB::UInt128]
inline bool_if_gt_int_vs_uint<TInt, TUInt> equalsOpTmpl(TUInt a, TInt b)
                                           ^
/Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Core/AccurateComparison.h:142:51: note: candidate template ignored: requirement 'std::is_integral_v<DB::UInt128>' was not satisfied [with TAInt = DB::UInt128, TAFloat = unsigned char]
inline bool_if_double_can_be_used<TAInt, TAFloat> equalsOpTmpl(TAInt a, TAFloat b)
                                                  ^
/Users/jayson/Projects/pingcap/tiflash/storage/ch/dbms/src/Core/AccurateComparison.h:148:51: note: candidate template ignored: requirement 'std::is_floating_point_v<DB::UInt128>' was not satisfied [with TAInt = unsigned char, TAFloat = DB::UInt128]
inline bool_if_double_can_be_used<TAInt, TAFloat> equalsOpTmpl(TAFloat a, TAInt b)
                                                  ^

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions