[PATCH] D22797: Fix for compiling with clang <= 3.7 and g++6 headers.
David Blaikie via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 2 11:55:20 PDT 2016
Hmm, nope, don't have a 3.7 conveniently lying around.
On Tue, Aug 2, 2016 at 11:26 AM David Blaikie <dblaikie at gmail.com> wrote:
> Perhaps we'd be best to just advise people to not mix this combination of
> compiler + standard library? GCC 6 was a pretty big step, as I understand
> it.
>
> (I'm just building Clang against GCC 6, but of course realizing the Clang
> I'm using is ToT, so it doesn't exhibit the problem you're describing)
>
> But I'll try to dial back to a 3.7 if I have one around & see if I can
> reproduce & find some better solution.
>
>
> On Tue, Aug 2, 2016 at 9:47 AM Frederich Munch <
> marsupial at users.noreply.github.com> wrote:
>
>> marsupial added a comment.
>>
>> Found one:
>>
>> In file included from ../../lib/CodeGen/LexicalScopes.cpp:17:
>> In file included from ../../include/llvm/CodeGen/LexicalScopes.h:20:
>> In file included from ../../include/llvm/ADT/ArrayRef.h:13:
>> In file included from ../../include/llvm/ADT/Hashing.h:49:
>> In file included from ../../include/llvm/Support/Host.h:17:
>> In file included from ../../include/llvm/ADT/StringMap.h:18:
>> In file included from ../../include/llvm/Support/Allocator.h:24:
>> In file included from ../../include/llvm/ADT/SmallVector.h:29:
>> In file included from
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/memory:79:
>> In file included from
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/functional:55:
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:1400:14:
>> error:
>> no matching constructor for initialization of
>> 'tuple<llvm::LexicalScope
>> *&&, const llvm::DILocalScope *&&, nullptr_t &&, bool &&>'
>> { return tuple<_Elements&&...>(std::forward<_Elements>(__args)...);
>> }
>> ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> ../../lib/CodeGen/LexicalScopes.cpp:155:36: note: in instantiation of
>> function
>> template specialization 'std::forward_as_tuple<llvm::LexicalScope
>> *&,
>> const llvm::DILocalScope *&, nullptr_t, bool>' requested here
>> std::forward_as_tuple(Parent, Scope,
>> nullptr,
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:600:18:
>> note:
>> candidate template ignored: disabled by 'enable_if' [with _Dummy
>> = void]
>> _TCC<_Dummy>::template
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:611:18:
>> note:
>> candidate template ignored: disabled by 'enable_if' [with _Dummy
>> = void]
>> _TCC<_Dummy>::template
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:628:5:
>> note:
>> candidate template ignored: disabled by 'enable_if' [with
>> _UElements =
>> <llvm::LexicalScope *&, const llvm::DILocalScope *&, nullptr_t,
>> bool>]
>> _TC<sizeof...(_UElements) == 1,
>> _Elements...>::template
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:641:5:
>> note:
>> candidate template ignored: disabled by 'enable_if' [with
>> _UElements =
>> <llvm::LexicalScope *&, const llvm::DILocalScope *&, nullptr_t,
>> bool>]
>> _TC<sizeof...(_UElements) == 1,
>> _Elements...>::template
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:737:19:
>> note:
>> candidate template ignored: disabled by 'enable_if' [with _Alloc
>> = const
>> llvm::DILocalScope *, _UElements = <nullptr_t, bool>]
>> enable_if<_TMC<_UElements...>::template
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:748:19:
>> note:
>> candidate template ignored: disabled by 'enable_if' [with _Alloc
>> = const
>> llvm::DILocalScope *, _UElements = <nullptr_t, bool>]
>> enable_if<_TMC<_UElements...>::template
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:579:17:
>> note:
>> candidate constructor template not viable: requires 0 arguments,
>> but 4
>> were provided
>> constexpr tuple()
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:589:26:
>> note:
>> candidate constructor template not viable: requires 0 arguments,
>> but 4
>> were provided
>> explicit constexpr tuple()
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:670:19:
>> note:
>> candidate constructor template not viable: requires single
>> argument
>> '__in', but 4 arguments were provided
>> constexpr tuple(const tuple<_UElements...>& __in)
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:682:28:
>> note:
>> candidate constructor template not viable: requires single
>> argument
>> '__in', but 4 arguments were provided
>> explicit constexpr tuple(const tuple<_UElements...>& __in)
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:694:19:
>> note:
>> candidate constructor template not viable: requires single
>> argument
>> '__in', but 4 arguments were provided
>> constexpr tuple(tuple<_UElements...>&& __in)
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:705:28:
>> note:
>> candidate constructor template not viable: requires single
>> argument
>> '__in', but 4 arguments were provided
>> explicit constexpr tuple(tuple<_UElements...>&& __in)
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:721:2:
>> note:
>> candidate constructor template not viable: requires 6 arguments,
>> but 4
>> were provided
>> tuple(allocator_arg_t __tag, const _Alloc& __a,
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:732:11:
>> note:
>> candidate constructor template not viable: requires 6 arguments,
>> but 4
>> were provided
>> explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:711:2:
>> note:
>> candidate constructor template not viable: requires 2 arguments,
>> but 4
>> were provided
>> tuple(allocator_arg_t __tag, const _Alloc& __a)
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:759:2:
>> note:
>> candidate constructor template not viable: requires 3 arguments,
>> but 4
>> were provided
>> tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple&
>> __in)
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:763:2:
>> note:
>> candidate constructor template not viable: requires 3 arguments,
>> but 4
>> were provided
>> tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in)
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:772:2:
>> note:
>> candidate constructor template not viable: requires 3 arguments,
>> but 4
>> were provided
>> tuple(allocator_arg_t __tag, const _Alloc& __a,
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:784:11:
>> note:
>> candidate constructor template not viable: requires 3 arguments,
>> but 4
>> were provided
>> explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:796:2:
>> note:
>> candidate constructor template not viable: requires 3 arguments,
>> but 4
>> were provided
>> tuple(allocator_arg_t __tag, const _Alloc& __a,
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:808:11:
>> note:
>> candidate constructor template not viable: requires 3 arguments,
>> but 4
>> were provided
>> explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:654:17:
>> note:
>> candidate constructor not viable: requires 1 argument, but 4 were
>> provided
>> constexpr tuple(tuple&&) = default;
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:652:17:
>> note:
>> candidate constructor not viable: requires 1 argument, but 4 were
>> provided
>> constexpr tuple(const tuple&) = default;
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:1400:14:
>> error:
>> no matching constructor for initialization of
>> 'tuple<llvm::LexicalScope
>> *&&, const llvm::DILocalScope *&&, const llvm::DILocation *&&,
>> bool &&>'
>> { return tuple<_Elements&&...>(std::forward<_Elements>(__args)...);
>> }
>> ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> ../../lib/CodeGen/LexicalScopes.cpp:186:43: note: in instantiation of
>> function
>> template specialization 'std::forward_as_tuple<llvm::LexicalScope
>> *&,
>> const llvm::DILocalScope *&, const llvm::DILocation *&, bool>'
>> requested
>> here
>> std::forward_as_tuple(Parent,
>> Scope,
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:600:18:
>> note:
>> candidate template ignored: disabled by 'enable_if' [with _Dummy
>> = void]
>> _TCC<_Dummy>::template
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:611:18:
>> note:
>> candidate template ignored: disabled by 'enable_if' [with _Dummy
>> = void]
>> _TCC<_Dummy>::template
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:628:5:
>> note:
>> candidate template ignored: disabled by 'enable_if' [with
>> _UElements =
>> <llvm::LexicalScope *&, const llvm::DILocalScope *&, const
>> llvm::DILocation *&, bool>]
>> _TC<sizeof...(_UElements) == 1,
>> _Elements...>::template
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:641:5:
>> note:
>> candidate template ignored: disabled by 'enable_if' [with
>> _UElements =
>> <llvm::LexicalScope *&, const llvm::DILocalScope *&, const
>> llvm::DILocation *&, bool>]
>> _TC<sizeof...(_UElements) == 1,
>> _Elements...>::template
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:737:19:
>> note:
>> candidate template ignored: disabled by 'enable_if' [with _Alloc
>> = const
>> llvm::DILocalScope *, _UElements = <const llvm::DILocation *&,
>> bool>]
>> enable_if<_TMC<_UElements...>::template
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:748:19:
>> note:
>> candidate template ignored: disabled by 'enable_if' [with _Alloc
>> = const
>> llvm::DILocalScope *, _UElements = <const llvm::DILocation *&,
>> bool>]
>> enable_if<_TMC<_UElements...>::template
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:579:17:
>> note:
>> candidate constructor template not viable: requires 0 arguments,
>> but 4
>> were provided
>> constexpr tuple()
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:589:26:
>> note:
>> candidate constructor template not viable: requires 0 arguments,
>> but 4
>> were provided
>> explicit constexpr tuple()
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:670:19:
>> note:
>> candidate constructor template not viable: requires single
>> argument
>> '__in', but 4 arguments were provided
>> constexpr tuple(const tuple<_UElements...>& __in)
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:682:28:
>> note:
>> candidate constructor template not viable: requires single
>> argument
>> '__in', but 4 arguments were provided
>> explicit constexpr tuple(const tuple<_UElements...>& __in)
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:694:19:
>> note:
>> candidate constructor template not viable: requires single
>> argument
>> '__in', but 4 arguments were provided
>> constexpr tuple(tuple<_UElements...>&& __in)
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:705:28:
>> note:
>> candidate constructor template not viable: requires single
>> argument
>> '__in', but 4 arguments were provided
>> explicit constexpr tuple(tuple<_UElements...>&& __in)
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:721:2:
>> note:
>> candidate constructor template not viable: requires 6 arguments,
>> but 4
>> were provided
>> tuple(allocator_arg_t __tag, const _Alloc& __a,
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:732:11:
>> note:
>> candidate constructor template not viable: requires 6 arguments,
>> but 4
>> were provided
>> explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:711:2:
>> note:
>> candidate constructor template not viable: requires 2 arguments,
>> but 4
>> were provided
>> tuple(allocator_arg_t __tag, const _Alloc& __a)
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:759:2:
>> note:
>> candidate constructor template not viable: requires 3 arguments,
>> but 4
>> were provided
>> tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple&
>> __in)
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:763:2:
>> note:
>> candidate constructor template not viable: requires 3 arguments,
>> but 4
>> were provided
>> tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in)
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:772:2:
>> note:
>> candidate constructor template not viable: requires 3 arguments,
>> but 4
>> were provided
>> tuple(allocator_arg_t __tag, const _Alloc& __a,
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:784:11:
>> note:
>> candidate constructor template not viable: requires 3 arguments,
>> but 4
>> were provided
>> explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:796:2:
>> note:
>> candidate constructor template not viable: requires 3 arguments,
>> but 4
>> were provided
>> tuple(allocator_arg_t __tag, const _Alloc& __a,
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:808:11:
>> note:
>> candidate constructor template not viable: requires 3 arguments,
>> but 4
>> were provided
>> explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:654:17:
>> note:
>> candidate constructor not viable: requires 1 argument, but 4 were
>> provided
>> constexpr tuple(tuple&&) = default;
>> ^
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:652:17:
>> note:
>> candidate constructor not viable: requires 1 argument, but 4 were
>> provided
>> constexpr tuple(const tuple&) = default;
>> ^
>> ../../lib/CodeGen/LexicalScopes.cpp:208:32: error: no matching function
>> for call
>> to 'forward_as_tuple'
>> std::forward_as_tuple(Parent, Scope,
>> ^~~~~~~~~~~~~~~~~~~~~
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/tuple:1399:5:
>> note:
>> candidate template ignored: substitution failure [with _Elements =
>> <llvm::LexicalScope *&, const llvm::DILocalScope *&, nullptr_t,
>> bool>]
>> forward_as_tuple(_Elements&&... __args) noexcept
>>
>>
>> Repository:
>> rL LLVM
>>
>> https://reviews.llvm.org/D22797
>>
>>
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160802/48ee0353/attachment.html>
More information about the llvm-commits
mailing list