[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