[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:26:45 PDT 2016


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/64412dee/attachment.html>


More information about the llvm-commits mailing list