Re: cross compiling freebsd-head is sigh, now broken - thanks libllvm

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Mon, 1 May 2017 13:23:43 +0200
On 19 Mar 2017, at 08:00, Adrian Chadd <adrian_at_freebsd.org> wrote:
> 
> ===> lib/clang (all)
> ===> lib/clang/libllvm (all)
> In file included from
> /usr/home/adrian/work/freebsd/head-embedded/obj/mips_ap/mips.mips/usr/home/adrian/work/freebsd/head-embedded/src/tmp/usr/include/c++/v1/math.h:309:0,
>                 from
> /usr/home/adrian/work/freebsd/head-embedded/obj/mips_ap/mips.mips/usr/home/adrian/work/freebsd/head-embedded/src/tmp/usr/include/c++/v1/cmath:305,
>                 from
> /usr/home/adrian/work/freebsd/head-embedded/src/lib/clang/include/llvm/Support/DataTypes.h:34,
>                 from
> /usr/home/adrian/work/freebsd/head-embedded/src/contrib/llvm/include/llvm/ADT/Hashing.h:48,
>                 from
> /usr/home/adrian/work/freebsd/head-embedded/src/contrib/llvm/include/llvm/ADT/ArrayRef.h:13,
>                 from
> /usr/home/adrian/work/freebsd/head-embedded/src/contrib/llvm/include/llvm/ADT/DenseMapInfo.h:17,
>                 from
> /usr/home/adrian/work/freebsd/head-embedded/src/contrib/llvm/include/llvm/ADT/DenseMap.h:17,
>                 from
> /usr/home/adrian/work/freebsd/head-embedded/src/contrib/llvm/include/llvm/IR/ValueMap.h:29,
>                 from
> /usr/home/adrian/work/freebsd/head-embedded/src/contrib/llvm/include/llvm/Transforms/Utils/ValueMapper.h:18,
>                 from
> /usr/home/adrian/work/freebsd/head-embedded/src/contrib/llvm/lib/Transforms/Utils/ValueMapper.cpp:15:
> /usr/home/adrian/work/freebsd/head-embedded/obj/mips_ap/mips.mips/usr/home/adrian/work/freebsd/head-embedded/src/tmp/usr/include/c++/v1/type_traits:
> In substitution of 'template<class _Tp, class ... _Args, class> static
> std::__1::true_type
> std::__1::__is_constructible_helper::__test_nary(int) [with _Tp =
> {anonymous}::MDNodeMapper::Data; _Args = {}; <template-parameter-1-3>
> = <missing>]':
> /usr/home/adrian/work/freebsd/head-embedded/obj/mips_ap/mips.mips/usr/home/adrian/work/freebsd/head-embedded/src/tmp/usr/include/c++/v1/type_traits:2993:59:
>  required from 'struct
> std::__1::__is_default_constructible<{anonymous}::MDNodeMapper::Data,
> false>'
> /usr/home/adrian/work/freebsd/head-embedded/obj/mips_ap/mips.mips/usr/home/adrian/work/freebsd/head-embedded/src/tmp/usr/include/c++/v1/type_traits:3015:8:
>  required from 'struct
> std::__1::__libcpp_is_constructible<{anonymous}::MDNodeMapper::Data>'
> /usr/home/adrian/work/freebsd/head-embedded/obj/mips_ap/mips.mips/usr/home/adrian/work/freebsd/head-embedded/src/tmp/usr/include/c++/v1/type_traits:3043:29:
>  required from 'struct
> std::__1::is_constructible<{anonymous}::MDNodeMapper::Data>'
> /usr/home/adrian/work/freebsd/head-embedded/obj/mips_ap/mips.mips/usr/home/adrian/work/freebsd/head-embedded/src/tmp/usr/include/c++/v1/type_traits:3229:29:
>  required from 'struct
> std::__1::is_default_constructible<{anonymous}::MDNodeMapper::Data>'
> /usr/home/adrian/work/freebsd/head-embedded/obj/mips_ap/mips.mips/usr/home/adrian/work/freebsd/head-embedded/src/tmp/usr/include/c++/v1/utility:352:15:
>  required from 'static constexpr bool std::__1::pair<_T1,
> _T2>::_CheckArgs::__enable_default() [with _U1 = const
> llvm::Metadata*; _U2 = {anonymous}::MDNodeMapper::Data; _T1 = const
> llvm::Metadata*; _T2 = {anonymous}::MDNodeMapper::Data]'
> /usr/home/adrian/work/freebsd/head-embedded/obj/mips_ap/mips.mips/usr/home/adrian/work/freebsd/head-embedded/src/tmp/usr/include/c++/v1/utility:403:71:
>  required by substitution of 'template<bool _Dummy, typename
> std::__1::enable_if<typename std::__1::conditional<_MaybeEnable,
> std::__1::pair<const llvm::Metadata*,
> {anonymous}::MDNodeMapper::Data>::_CheckArgs,
> std::__1::__check_tuple_constructor_fail>::type::
> __enable_default<const Metadata*, Data>(), bool>::type <anonymous> >
> constexpr std::__1::pair<_T1, _T2>::pair() [with bool _Dummy = true;
> typename std::__1::enable_if<typename
> std::__1::conditional<_MaybeEnable, std::__1::pair<const
> llvm::Metadata*, {anonymous}::MDNodeMapper::Data>::_CheckArgs,
> std::__1::__check_tuple_constructor_fail>::type::
> __enable_default<const Metadata*, Data>(), bool>::type <anonymous> =
> <missing>]'
> /usr/home/adrian/work/freebsd/head-embedded/src/contrib/llvm/include/llvm/ADT/DenseMap.h:39:8:
>  required from 'struct llvm::detail::DenseMapPair<const
> llvm::Metadata*, {anonymous}::MDNodeMapper::Data>'
> /usr/home/adrian/work/freebsd/head-embedded/src/contrib/llvm/include/llvm/Support/AlignOf.h:111:6:
>  required from 'class
> llvm::detail::AlignerImpl<llvm::detail::DenseMapPair<const
> llvm::Metadata*, {anonymous}::MDNodeMapper::Data> [32],
> llvm::SmallDenseMap<const llvm::Metadata*,
> {anonymous}::MDNodeMapper::Data, 32u>::LargeRep, char, char, char,
> char, char, char, char, char>'
> /usr/home/adrian/work/freebsd/head-embedded/src/contrib/llvm/include/llvm/Support/AlignOf.h:138:8:
>  required from 'struct
> llvm::AlignedCharArrayUnion<llvm::detail::DenseMapPair<const
> llvm::Metadata*, {anonymous}::MDNodeMapper::Data> [32],
> llvm::SmallDenseMap<const llvm::Metadata*,
> {anonymous}::MDNodeMapper::Data, 32u>::LargeRep, char, char, char,
> char, char, char, char, char>'
> /usr/home/adrian/work/freebsd/head-embedded/src/contrib/llvm/include/llvm/ADT/DenseMap.h:759:59:
>  required from 'class llvm::SmallDenseMap<const llvm::Metadata*,
> {anonymous}::MDNodeMapper::Data, 32u>'
> /usr/home/adrian/work/freebsd/head-embedded/src/contrib/llvm/lib/Transforms/Utils/ValueMapper.cpp:182:47:
>  required from here
> /usr/home/adrian/work/freebsd/head-embedded/obj/mips_ap/mips.mips/usr/home/adrian/work/freebsd/head-embedded/src/tmp/usr/include/c++/v1/type_traits:2980:9:
> error: constructor required before non-static data member for
> '{anonymous}::MDNodeMapper::Data::HasChanged' has been parsed
>         class = decltype(_Tp(_VSTD::declval<_Args>()...))>
>         ^
> /usr/home/adrian/work/freebsd/head-embedded/obj/mips_ap/mips.mips/usr/home/adrian/work/freebsd/head-embedded/src/tmp/usr/include/c++/v1/type_traits:2980:9:
> error: constructor required before non-static data member for
> '{anonymous}::MDNodeMapper::Data::ID' has been parsed
> *** Error code 1

FWIW, I finally took some time to look at this properly, and it turns
out it is a gcc bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70528

The fix, https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=235002,
has not been merged to the gcc 5.x branch, even though it seems fairly
trivial.  We might want to apply this one manually to our gcc 5 ports,
for the mean time, while prodding upstream to merge it.

-Dimitry


Received on Mon May 01 2017 - 09:24:01 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:11 UTC