Hi,
I'm trying to build llvm (git monorepo) on Ubuntu 18.04 with
EXPENSIVE_CHECKS enabled and running into various errors compiling
SourceMgr.cpp, depending on which host compiler I use.
For example with GCC:
$ CC=gcc-8 CXX=g++-8 cmake -GNinja -DCMAKE_BUILD_TYPE=Debug
-DLLVM_ENABLE_EXPENSIVE_CHECKS=ON ~/git/llvm-project/llvm/ && ninja
...
[89/2690] Building CXX object
lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o
FAILED: lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o
/usr/lib/ccache/g++-8 -DEXPENSIVE_CHECKS -DGTEST_HAS_RTTI=0 -D_DEBUG
-D_GLIBCXX_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS
-D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Ilib/Support
-I/home/jayfoad2/git/llvm-project/llvm/lib/Support -Iinclude
-I/home/jayfoad2/git/llvm-project/llvm/incl
ude -fPIC -fvisibility-inlines-hidden -Werror=date-time -std=c++14
-Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual
-Wno-missing-field-initializers -pedantic -Wno-long-long
-Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-class-memaccess
-Wno-noexcept-type -Wdelete-non-virtual-dtor -Wno-comment
-fdiagnostics-color -g -fno-exceptions -fno-rtti -MD -MT
lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o -MF
lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o.d -o
lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o -c
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp
In file included from /usr/include/c++/8/algorithm:62,
from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/MathExtras.h:18,
from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/SmallVector.h:19,
from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/STLExtras.h:20,
from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/StringRef.h:12,
from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/StringMap.h:16,
from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/Host.h:16,
from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/Hashing.h:48,
from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/ArrayRef.h:12,
from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:18,
from
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15:
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:
In instantiation of ‘constexpr const int
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> >*, std::__debug::vector<short
unsigned int, std::allocator<short unsigned int> >*,
std::__debug::vector<unsigned int, std::allocator<unsigned int> >*,
std::__debug::vector<long unsigned int, std::allocator<long unsigned
int> >*>::NumLowBitsAvailable’:
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:144:48:
required from ‘struct llvm::PointerIntPairInfo<void*, 2,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> >*, std::__debug::vector<short
unsigned int, std::allocator<short unsigned int> >*,
std::__debug::vector<unsigned int, std::allocator<unsigned int> >*,
std::__debug::vector<long unsigned int, std::allocator<long unsigned
int> >*> >’
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:71:32:
required from ‘void llvm::PointerIntPair<PointerTy, IntBits,
IntType, PtrTraits, Info>::initWithPointer(PointerTy) [with PointerTy
= void*; unsigned int IntBits = 2; IntType = int; PtrTraits
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> >*, std::__debug::vector<short
unsigned int, std::allocator<short unsigned int> >*,
std::__debug::vector<unsigned int, std::allocator<unsigned int> >*,
std::__debug::vector<long unsigned int, std::allocator<long unsigned
int> >*>; Info = llvm::PointerIntPairInfo<void*, 2,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> >*, std::__debug::vector<short
unsigned int, std::allocator<short unsigned int> >*,
std::__debug::vector<unsigned int, std::allocator<unsigned int> >*,
std::__debug::vector<long unsigned int, std::allocator<long unsigned
int> >*> >]’
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:227:5:
required from ‘const llvm::PointerUnion<PTs>&
llvm::PointerUnion<PTs>::operator=(std::nullptr_t) [with PTs
{std::__debug::vector<unsigned char, std::allocator<unsigned char>
>*,
std::__debug::vector<short unsigned int, std::allocator<short unsigned
int> >*, std::__debug::vector<unsigned int, std::allocator<unsigned
int> >*, std::__debug::vector<long unsigned int, std::allocator<long
unsigned int> >*}; std::nullptr_t = std::nullptr_t]’
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:107:23:
required from here
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:93:72:
in ‘constexpr’ expansion of
‘llvm::pointer_union_detail::lowBitsAvailable<std::__debug::vector<unsigned
char, std::allocator<unsigned char> >*, std::__debug::vector<short
unsigned int, std::allocator<short unsigned int> >*,
std::__debug::vector<unsigned int, std::allocator<unsigned int> >*,
std::__debug::vector<long unsigned int, std::allocator<long unsigned
int> >*>()’
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:64:25:
in ‘constexpr’ expansion of
‘std::min<int>(std::initializer_list<int>{((const int*)(&
._125)),
4})’
/usr/include/c++/8/bits/stl_algo.h:3451:31: error: ‘constexpr _FIter
std::min_element(_FIter, _FIter) [with _FIter = const int*]’ called in
a constant expression
{ return *std::min_element(__l.begin(), __l.end()); }
~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/8/bits/stl_algo.h:5610:12: note: ‘constexpr _FIter
std::min_element(_FIter, _FIter) [with _FIter = const int*]’ is not
usable as a ‘constexpr’ function because:
inline min_element(_ForwardIterator __first, _ForwardIterator __last)
^~~~~~~~~~~
In file included from /usr/include/c++/8/debug/debug.h:84,
from /usr/include/c++/8/bits/stl_algobase.h:69,
from /usr/include/c++/8/memory:62,
from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/Optional.h:22,
from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/STLExtras.h:19,
from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/StringRef.h:12,
from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/StringMap.h:16,
from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/Host.h:16,
from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/Hashing.h:48,
from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/ArrayRef.h:12,
from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:18,
from
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15:
/usr/include/c++/8/bits/stl_algo.h:5616:7: error: call to
non-‘constexpr’ function ‘bool __gnu_debug::__valid_range(const
_InputIterator&, const _InputIterator&) [with _InputIterator = const
int*]’
__glibcxx_requires_valid_range(__first, __last);
^
In file included from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:18,
from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20,
from
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15:
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:
In instantiation of ‘struct llvm::PointerIntPairInfo<void*, 2,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> >*, std::__debug::vector<short
unsigned int, std::allocator<short unsigned int> >*,
std::__debug::vector<unsigned int, std::allocator<unsigned int> >*,
std::__debug::vector<long unsigned int, std::allocator<long unsigned
int> >*> >’:
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:71:32:
required from ‘void llvm::PointerIntPair<PointerTy, IntBits,
IntType, PtrTraits, Info>::initWithPointer(PointerTy) [with PointerTy
= void*; unsigned int IntBits = 2; IntType = int; PtrTraits
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> >*, std::__debug::vector<short
unsigned int, std::allocator<short unsigned int> >*,
std::__debug::vector<unsigned int, std::allocator<unsigned int> >*,
std::__debug::vector<long unsigned int, std::allocator<long unsigned
int> >*>; Info = llvm::PointerIntPairInfo<void*, 2,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> >*, std::__debug::vector<short
unsigned int, std::allocator<short unsigned int> >*,
std::__debug::vector<unsigned int, std::allocator<unsigned int> >*,
std::__debug::vector<long unsigned int, std::allocator<long unsigned
int> >*> >]’
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:227:5:
required from ‘const llvm::PointerUnion<PTs>&
llvm::PointerUnion<PTs>::operator=(std::nullptr_t) [with PTs
{std::__debug::vector<unsigned char, std::allocator<unsigned char>
>*,
std::__debug::vector<short unsigned int, std::allocator<short unsigned
int> >*, std::__debug::vector<unsigned int, std::allocator<unsigned
int> >*, std::__debug::vector<long unsigned int, std::allocator<long
unsigned int> >*}; std::nullptr_t = std::nullptr_t]’
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:107:23:
required from here
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:149:8:
error: enumerator value for ‘IntShift’ is not an integer constant
enum : uintptr_t {
^
For example with Clang:
$ CC=clang-7 CXX=clang++-7 cmake -GNinja -DCMAKE_BUILD_TYPE=Debug
-DLLVM_ENABLE_EXPENSIVE_CHECKS=ON ~/git/llvm-project/llvm/ && ninja
[...]
[91/2690] Building CXX object
lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o
FAILED: lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o
/usr/bin/clang++-7 -DEXPENSIVE_CHECKS -DGTEST_HAS_RTTI=0 -D_DEBUG
-D_GLIBCXX_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS
-D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Ilib/Support
-I/home/jayfoad2/git/llvm-project/llvm/lib/Support -Iinclude
-I/home/jayfoad2/git/llvm-project/llvm/include -fPIC
-fvisibility-inlines-hidden -Werror=date-time
-Werror=unguarded-availability-new -std=c++14 -Wall -Wextra
-Wno-unused-parameter -Wwrite-strings -Wcast-qual
-Wmissing-field-initializers -pedantic -Wno-long-long
-Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type
-Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion
-fdiagnostics-color -g -fno-exceptions -fno-rtti -MD -MT
lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o -MF
lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o.d -o
lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o -c
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp
In file included from
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15:
In file included from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20:
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:93:26:
error: constexpr variable 'NumLowBitsAvailable' must be initialized by
a constant expression
static constexpr int NumLowBitsAvailable = lowBitsAvailable<PTs...>();
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:144:17:
note: in instantiation of template class
'llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>' requested here
static_assert(PtrTraits::NumLowBitsAvailable <
^
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:71:13:
note: in instantiation of template class
'llvm::PointerIntPairInfo<void *, 2,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>>' requested here
Value = Info::updatePointer(0, PtrVal);
^
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:227:15:
note: in instantiation of member function 'llvm::PointerIntPair<void
*, 2, int,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>, llvm::PointerIntPairInfo<void *, 2,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>> >::initWithPointer' requested here
this->Val.initWithPointer(nullptr);
^
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:107:21:
note: in instantiation of member function
'llvm::PointerUnion<std::__debug::vector<unsigned char,
std::allocator<unsigned char> > *, std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>::operator=' requested here
Other.OffsetCache = nullptr;
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/stl_algo.h:5616:7:
note: non-constexpr function '__valid_range<const int *>' cannot
be
used in a constant expression
__glibcxx_requires_valid_range(__first, __last);
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/debug/debug.h:88:3:
note: expanded from macro '__glibcxx_requires_valid_range'
__glibcxx_check_valid_range(_First,_Last)
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/debug/macros.h:54:23:
note: expanded from macro '__glibcxx_check_valid_range'
_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__valid_range(_First, _Last), \
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/stl_algo.h:3451:15:
note: in call to
'min_element(&{PointerLikeTypeTraits<vector<unsigned
char, allocator<unsigned char> > *>::NumLowBitsAvailable,
PointerLikeTypeTraits<vector<unsigned short, allocator<unsigned
short>> *>::NumLowBitsAvailable, PointerLikeTypeTraits<vector<unsigned
int,
allocator<unsigned int> > *>::NumLowBitsAvailable,
PointerLikeTypeTraits<vector<unsigned long, allocator<unsigned long>
>
*>::NumLowBitsAvailable}[0],
&{PointerLikeTypeTraits<vector<unsigned
char, allocator<unsigned char> > *>::NumLowBitsAvailable,
PointerLikeTypeTraits<vector<unsigned short, allocator<unsigned
short>> *>::NumLowBitsAvailable, PointerLikeTypeTraits<vector<unsigned
int,
allocator<unsigned int> > *>::NumLowBitsAvailable,
PointerLikeTypeTraits<vector<unsigned long, allocator<unsigned long>
>
*>::NumLowBitsAvailable}[4])'
{ return *std::min_element(__l.begin(), __l.end()); }
^
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:64:12:
note: in call to 'min({&{PointerLikeTypeTraits<vector<unsigned
char,
allocator<unsigned char> > *>::NumLowBitsAvailable,
PointerLikeTypeTraits<vector<unsigned short, allocator<unsigned
short>> *>::NumLowBitsAvailable, PointerLikeTypeTraits<vector<unsigned
int,
allocator<unsigned int> > *>::NumLowBitsAvailable,
PointerLikeTypeTraits<vector<unsigned long, allocator<unsigned long>
>
*>::NumLowBitsAvailable}[0], 4})'
return
std::min<int>({PointerLikeTypeTraits<Ts>::NumLowBitsAvailable...});
^
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:93:48:
note: in call to 'lowBitsAvailable()'
static constexpr int NumLowBitsAvailable = lowBitsAvailable<PTs...>();
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/debug/helper_functions.h:161:5:
note: declared here
__valid_range(const _InputIterator& __first, const _InputIterator&
__last)
^
In file included from
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15:
In file included from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20:
In file included from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:18:
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:144:17:
error: static_assert expression is not an integral constant expression
static_assert(PtrTraits::NumLowBitsAvailable <
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:71:13:
note: in instantiation of template class
'llvm::PointerIntPairInfo<void *, 2,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>>' requested here
Value = Info::updatePointer(0, PtrVal);
^
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:227:15:
note: in instantiation of member function 'llvm::PointerIntPair<void
*, 2, int,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>, llvm::PointerIntPairInfo<void *, 2,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>> >::initWithPointer' requested here
this->Val.initWithPointer(nullptr);
^
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:107:21:
note: in instantiation of member function
'llvm::PointerUnion<std::__debug::vector<unsigned char,
std::allocator<unsigned char> > *, std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>::operator=' requested here
Other.OffsetCache = nullptr;
^
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:144:17:
note: initializer of 'NumLowBitsAvailable' is not a constant
expression
static_assert(PtrTraits::NumLowBitsAvailable <
^
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:93:26:
note: declared here
static constexpr int NumLowBitsAvailable = lowBitsAvailable<PTs...>();
^
In file included from
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15:
In file included from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20:
In file included from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:18:
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:71:17:
error: incomplete definition of type 'llvm::PointerIntPairInfo<void *,
2,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>>'
Value = Info::updatePointer(0, PtrVal);
~~~~^~
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:227:15:
note: in instantiation of member function 'llvm::PointerIntPair<void
*, 2, int,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>, llvm::PointerIntPairInfo<void *, 2,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>> >::initWithPointer' requested here
this->Val.initWithPointer(nullptr);
^
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:107:21:
note: in instantiation of member function
'llvm::PointerUnion<std::__debug::vector<unsigned char,
std::allocator<unsigned char> > *, std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>::operator=' requested here
Other.OffsetCache = nullptr;
^
In file included from
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15:
In file included from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20:
In file included from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:18:
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:58:47:
error: no member named 'getPointer' in
'llvm::PointerIntPairInfo<void
*, 2,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>>'
PointerTy getPointer() const { return Info::getPointer(Value); }
^
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:179:43:
note: in instantiation of member function 'llvm::PointerIntPair<void
*, 2, int,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>, llvm::PointerIntPairInfo<void *, 2,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>> >::getPointer' requested here
bool isNull() const { return !this->Val.getPointer(); }
^
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:111:20:
note: in instantiation of member function
'llvm::PointerUnion<std::__debug::vector<unsigned char,
std::allocator<unsigned char> > *, std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>::isNull' requested here
if (!OffsetCache.isNull()) {
^
In file included from
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15:
In file included from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20:
In file included from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:18:
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:60:50:
error: no member named 'getInt' in 'llvm::PointerIntPairInfo<void
*,
2,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>>'
IntType getInt() const { return (IntType)Info::getInt(Value); }
^
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:188:22:
note: in instantiation of member function 'llvm::PointerIntPair<void
*, 2, int,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>, llvm::PointerIntPairInfo<void *, 2,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>> >::getInt' requested here
return this->Val.getInt() == Index;
^
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:112:21:
note: in instantiation of function template specialization
'llvm::PointerUnion<std::__debug::vector<unsigned char,
std::allocator<unsigned char> > *, std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>::is<std::__debug::vector<unsigned char, std::allocator<unsigned
char> > *>' requested here
if (OffsetCache.is<std::vector<uint8_t>*>())
^
In file included from
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15:
In file included from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20:
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:195:12:
error: no matching member function for call to 'is'
assert(is<T>() && "Invalid accessor called");
^~~~~
/usr/include/assert.h:93:27: note: expanded from macro 'assert'
(static_cast <bool> (expr) \
^~~~
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:115:26:
note: in instantiation of function template specialization
'llvm::PointerUnion<std::__debug::vector<unsigned char,
std::allocator<unsigned char> > *, std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>::get<std::__debug::vector<unsigned short, std::allocator<unsigned
short> > *>' requested here
delete OffsetCache.get<std::vector<uint16_t>*>();
^
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:184:29:
note: candidate template ignored: substitution failure [with T
std::__debug::vector<unsigned short, std::allocator<unsigned short>
>
*]
template <typename T> int is() const {
^
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:195:12:
error: no matching member function for call to 'is'
assert(is<T>() && "Invalid accessor called");
^~~~~
/usr/include/assert.h:93:27: note: expanded from macro 'assert'
(static_cast <bool> (expr) \
^~~~
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:117:26:
note: in instantiation of function template specialization
'llvm::PointerUnion<std::__debug::vector<unsigned char,
std::allocator<unsigned char> > *, std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>::get<std::__debug::vector<unsigned int, std::allocator<unsigned
int> > *>' requested here
delete OffsetCache.get<std::vector<uint32_t>*>();
^
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:184:29:
note: candidate template ignored: substitution failure [with T
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *]
template <typename T> int is() const {
^
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:89:27:
error: no matching member function for call to 'get'
Offsets = OffsetCache.get<std::vector<T> *>();
~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:136:17:
note: in instantiation of function template specialization
'llvm::SourceMgr::SrcBuffer::getLineNumber<unsigned char>'
requested
here
LineNo = SB.getLineNumber<uint8_t>(Ptr);
^
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:194:27:
note: candidate template ignored: substitution failure [with T
std::__debug::vector<unsigned char, std::allocator<unsigned char> >
*]
template <typename T> T get() const {
^
In file included from
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15:
In file included from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20:
In file included from
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:18:
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:75:19:
error: no member named 'updateInt' in
'llvm::PointerIntPairInfo<void
*, 2,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>>'
Value = Info::updateInt(Info::updatePointer(0, PtrVal),
^
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:53:5:
note: in instantiation of member function 'llvm::PointerIntPair<void
*, 2, int,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>, llvm::PointerIntPairInfo<void *, 2,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>> >::setPointerAndInt' requested here
setPointerAndInt(PtrVal, IntVal);
^
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:131:19:
note: in instantiation of member function 'llvm::PointerIntPair<void
*, 2, int,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>, llvm::PointerIntPairInfo<void *, 2,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>> >::PointerIntPair' requested here
this->Val = ValTy(
^
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:79:17:
note: in instantiation of member function
'llvm::pointer_union_detail::PointerUnionMembers<llvm::PointerUnion<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>, llvm::PointerIntPair<void *, 2, int,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>, llvm::PointerIntPairInfo<void *, 2,
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*>> >, 0, std::__debug::vector<unsigned char, std::allocator<unsigned
char> > *, std::__debug::vector<unsigned short,
std::allocator<unsigned short> > *, std::__debug::vector<unsigned
int,
std::allocator<unsigned int> > *, std::__debug::vector<unsigned
long,
std::allocator<unsigned long> > *>::operator=' requested here
OffsetCache = Offsets;
^
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:136:17:
note: in instantiation of function template specialization
'llvm::SourceMgr::SrcBuffer::getLineNumber<unsigned char>'
requested
here
LineNo = SB.getLineNumber<uint8_t>(Ptr);
^
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:89:27:
error: no matching member function for call to 'get'
Offsets = OffsetCache.get<std::vector<T> *>();
~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:138:17:
note: in instantiation of function template specialization
'llvm::SourceMgr::SrcBuffer::getLineNumber<unsigned short>'
requested
here
LineNo = SB.getLineNumber<uint16_t>(Ptr);
^
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:194:27:
note: candidate template ignored: substitution failure [with T
std::__debug::vector<unsigned short, std::allocator<unsigned short>
>
*]
template <typename T> T get() const {
^
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:89:27:
error: no matching member function for call to 'get'
Offsets = OffsetCache.get<std::vector<T> *>();
~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:140:17:
note: in instantiation of function template specialization
'llvm::SourceMgr::SrcBuffer::getLineNumber<unsigned int>'
requested
here
LineNo = SB.getLineNumber<uint32_t>(Ptr);
^
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:194:27:
note: candidate template ignored: substitution failure [with T
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *]
template <typename T> T get() const {
^
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:89:27:
error: no matching member function for call to 'get'
Offsets = OffsetCache.get<std::vector<T> *>();
~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
/home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:142:17:
note: in instantiation of function template specialization
'llvm::SourceMgr::SrcBuffer::getLineNumber<unsigned long>'
requested
here
LineNo = SB.getLineNumber<uint64_t>(Ptr);
^
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:194:27:
note: candidate template ignored: substitution failure [with T
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*]
template <typename T> T get() const {
^
12 errors generated.
Any idea what's wrong, or what I'm doing wrong?
Thanks,
Jay.
Looks to me like a bug in GCC's constexpr+_GLIBCXX_CONCEPT_CHECKS support.
Small test case:
$ g++-8 test.cpp -std=c++2a -fsyntax-only
$ g++-8 test.cpp -std=c++2a -fsyntax-only -D_GLIBCXX_CONCEPT_CHECKS
In file included from /usr/include/c++/8/algorithm:62,
from test.cpp:1:
test.cpp:3:27: in ‘constexpr’ expansion of
‘std::min<int>(std::initializer_list<int>{((const int*)(&
._61)), 6})’
/usr/include/c++/8/bits/stl_algo.h:3451:31: error: ‘constexpr _FIter
std::min_element(_FIter, _FIter) [with _FIter = const int*]’ called in a
constant expression
{ return *std::min_element(__l.begin(), __l.end()); }
~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/8/bits/stl_algo.h:5610:12: note: ‘constexpr _FIter
std::min_element(_FIter, _FIter) [with _FIter = const int*]’ is not usable
as a ‘constexpr’ function because:
inline min_element(_ForwardIterator __first, _ForwardIterator __last)
^~~~~~~~~~~
In file included from /usr/include/c++/8/bits/move.h:34,
from /usr/include/c++/8/bits/stl_pair.h:59,
from /usr/include/c++/8/utility:70,
from /usr/include/c++/8/algorithm:60,
from test.cpp:1:
/usr/include/c++/8/bits/stl_algo.h:5613:7: error: call to non-‘constexpr’
function ‘void __gnu_cxx::__function_requires() [with _Concept
__gnu_cxx::_ForwardIteratorConcept<const int*>]’
__glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
^~~~~~~~~~~~~~~~~~~~~~~~~~~
On Tue, Sep 3, 2019 at 7:10 AM Jay Foad via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> Hi,
>
> I'm trying to build llvm (git monorepo) on Ubuntu 18.04 with
> EXPENSIVE_CHECKS enabled and running into various errors compiling
> SourceMgr.cpp, depending on which host compiler I use.
>
> For example with GCC:
>
> $ CC=gcc-8 CXX=g++-8 cmake -GNinja -DCMAKE_BUILD_TYPE=Debug
> -DLLVM_ENABLE_EXPENSIVE_CHECKS=ON ~/git/llvm-project/llvm/ && ninja
> ...
> [89/2690] Building CXX object
> lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o
> FAILED: lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o
> /usr/lib/ccache/g++-8 -DEXPENSIVE_CHECKS -DGTEST_HAS_RTTI=0 -D_DEBUG
> -D_GLIBCXX_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS
> -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Ilib/Support
> -I/home/jayfoad2/git/llvm-project/llvm/lib/Support -Iinclude
> -I/home/jayfoad2/git/llvm-project/llvm/incl
> ude -fPIC -fvisibility-inlines-hidden -Werror=date-time -std=c++14
> -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual
> -Wno-missing-field-initializers -pedantic -Wno-long-long
> -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-class-memaccess
> -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wno-comment
> -fdiagnostics-color -g -fno-exceptions -fno-rtti -MD -MT
> lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o -MF
> lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o.d -o
> lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o -c
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp
> In file included from /usr/include/c++/8/algorithm:62,
> from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/MathExtras.h:18,
> from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/SmallVector.h:19,
> from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/STLExtras.h:20,
> from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/StringRef.h:12,
> from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/StringMap.h:16,
> from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/Host.h:16,
> from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/Hashing.h:48,
> from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/ArrayRef.h:12,
> from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:18,
> from
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15:
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:
> In instantiation of ‘constexpr const int
>
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> >*,
std::__debug::vector<short
> unsigned int, std::allocator<short unsigned int> >*,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
>*,
> std::__debug::vector<long unsigned int, std::allocator<long unsigned
> int> >*>::NumLowBitsAvailable’:
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:144:48:
> required from ‘struct llvm::PointerIntPairInfo<void*, 2,
>
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> >*,
std::__debug::vector<short
> unsigned int, std::allocator<short unsigned int> >*,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
>*,
> std::__debug::vector<long unsigned int, std::allocator<long unsigned
> int> >*> >’
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:71:32:
> required from ‘void llvm::PointerIntPair<PointerTy, IntBits,
> IntType, PtrTraits, Info>::initWithPointer(PointerTy) [with PointerTy
> = void*; unsigned int IntBits = 2; IntType = int; PtrTraits >
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> >*,
std::__debug::vector<short
> unsigned int, std::allocator<short unsigned int> >*,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
>*,
> std::__debug::vector<long unsigned int, std::allocator<long unsigned
> int> >*>; Info = llvm::PointerIntPairInfo<void*, 2,
>
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> >*,
std::__debug::vector<short
> unsigned int, std::allocator<short unsigned int> >*,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
>*,
> std::__debug::vector<long unsigned int, std::allocator<long unsigned
> int> >*> >]’
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:227:5:
> required from ‘const llvm::PointerUnion<PTs>&
> llvm::PointerUnion<PTs>::operator=(std::nullptr_t) [with PTs >
{std::__debug::vector<unsigned char, std::allocator<unsigned char>
>*,
> std::__debug::vector<short unsigned int, std::allocator<short
unsigned
> int> >*, std::__debug::vector<unsigned int,
std::allocator<unsigned
> int> >*, std::__debug::vector<long unsigned int,
std::allocator<long
> unsigned int> >*}; std::nullptr_t = std::nullptr_t]’
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:107:23:
> required from here
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:93:72:
> in ‘constexpr’ expansion of
>
‘llvm::pointer_union_detail::lowBitsAvailable<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> >*,
std::__debug::vector<short
> unsigned int, std::allocator<short unsigned int> >*,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
>*,
> std::__debug::vector<long unsigned int, std::allocator<long unsigned
> int> >*>()’
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:64:25:
> in ‘constexpr’ expansion of
> ‘std::min<int>(std::initializer_list<int>{((const int*)(&
._125)),
> 4})’
> /usr/include/c++/8/bits/stl_algo.h:3451:31: error: ‘constexpr _FIter
> std::min_element(_FIter, _FIter) [with _FIter = const int*]’ called in
> a constant expression
> { return *std::min_element(__l.begin(), __l.end()); }
> ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/c++/8/bits/stl_algo.h:5610:12: note: ‘constexpr _FIter
> std::min_element(_FIter, _FIter) [with _FIter = const int*]’ is not
> usable as a ‘constexpr’ function because:
> inline min_element(_ForwardIterator __first, _ForwardIterator __last)
> ^~~~~~~~~~~
> In file included from /usr/include/c++/8/debug/debug.h:84,
> from /usr/include/c++/8/bits/stl_algobase.h:69,
> from /usr/include/c++/8/memory:62,
> from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/Optional.h:22,
> from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/STLExtras.h:19,
> from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/StringRef.h:12,
> from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/StringMap.h:16,
> from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/Host.h:16,
> from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/Hashing.h:48,
> from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/ArrayRef.h:12,
> from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:18,
> from
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15:
> /usr/include/c++/8/bits/stl_algo.h:5616:7: error: call to
> non-‘constexpr’ function ‘bool __gnu_debug::__valid_range(const
> _InputIterator&, const _InputIterator&) [with _InputIterator =
const
> int*]’
> __glibcxx_requires_valid_range(__first, __last);
> ^
> In file included from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:18,
> from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20,
> from
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15:
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:
> In instantiation of ‘struct llvm::PointerIntPairInfo<void*, 2,
>
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> >*,
std::__debug::vector<short
> unsigned int, std::allocator<short unsigned int> >*,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
>*,
> std::__debug::vector<long unsigned int, std::allocator<long unsigned
> int> >*> >’:
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:71:32:
> required from ‘void llvm::PointerIntPair<PointerTy, IntBits,
> IntType, PtrTraits, Info>::initWithPointer(PointerTy) [with PointerTy
> = void*; unsigned int IntBits = 2; IntType = int; PtrTraits >
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> >*,
std::__debug::vector<short
> unsigned int, std::allocator<short unsigned int> >*,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
>*,
> std::__debug::vector<long unsigned int, std::allocator<long unsigned
> int> >*>; Info = llvm::PointerIntPairInfo<void*, 2,
>
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> >*,
std::__debug::vector<short
> unsigned int, std::allocator<short unsigned int> >*,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
>*,
> std::__debug::vector<long unsigned int, std::allocator<long unsigned
> int> >*> >]’
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:227:5:
> required from ‘const llvm::PointerUnion<PTs>&
> llvm::PointerUnion<PTs>::operator=(std::nullptr_t) [with PTs >
{std::__debug::vector<unsigned char, std::allocator<unsigned char>
>*,
> std::__debug::vector<short unsigned int, std::allocator<short
unsigned
> int> >*, std::__debug::vector<unsigned int,
std::allocator<unsigned
> int> >*, std::__debug::vector<long unsigned int,
std::allocator<long
> unsigned int> >*}; std::nullptr_t = std::nullptr_t]’
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:107:23:
> required from here
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:149:8:
> error: enumerator value for ‘IntShift’ is not an integer constant
> enum : uintptr_t {
> ^
>
>
> For example with Clang:
>
> $ CC=clang-7 CXX=clang++-7 cmake -GNinja -DCMAKE_BUILD_TYPE=Debug
> -DLLVM_ENABLE_EXPENSIVE_CHECKS=ON ~/git/llvm-project/llvm/ && ninja
> [...]
> [91/2690] Building CXX object
> lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o
> FAILED: lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o
> /usr/bin/clang++-7 -DEXPENSIVE_CHECKS -DGTEST_HAS_RTTI=0 -D_DEBUG
> -D_GLIBCXX_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS
> -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Ilib/Support
> -I/home/jayfoad2/git/llvm-project/llvm/lib/Support -Iinclude
> -I/home/jayfoad2/git/llvm-project/llvm/include -fPIC
> -fvisibility-inlines-hidden -Werror=date-time
> -Werror=unguarded-availability-new -std=c++14 -Wall -Wextra
> -Wno-unused-parameter -Wwrite-strings -Wcast-qual
> -Wmissing-field-initializers -pedantic -Wno-long-long
> -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type
> -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion
> -fdiagnostics-color -g -fno-exceptions -fno-rtti -MD -MT
> lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o -MF
> lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o.d -o
> lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o -c
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp
> In file included from
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15:
> In file included from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20:
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:93:26:
> error: constexpr variable 'NumLowBitsAvailable' must be initialized
by
> a constant expression
> static constexpr int NumLowBitsAvailable =
lowBitsAvailable<PTs...>();
> ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:144:17:
> note: in instantiation of template class
>
>
'llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
>
> *>' requested here
> static_assert(PtrTraits::NumLowBitsAvailable <
> ^
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:71:13:
> note: in instantiation of template class
> 'llvm::PointerIntPairInfo<void *, 2,
>
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
> *>
> >' requested here
> Value = Info::updatePointer(0, PtrVal);
> ^
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:227:15:
> note: in instantiation of member function 'llvm::PointerIntPair<void
> *, 2, int,
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
>
> *>, llvm::PointerIntPairInfo<void *, 2,
>
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
> *>
> > >::initWithPointer' requested here
> this->Val.initWithPointer(nullptr);
> ^
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:107:21:
> note: in instantiation of member function
> 'llvm::PointerUnion<std::__debug::vector<unsigned char,
> std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
>
> *>::operator=' requested here
> Other.OffsetCache = nullptr;
> ^
>
>
/usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/stl_algo.h:5616:7:
> note: non-constexpr function '__valid_range<const int *>'
cannot be
> used in a constant expression
> __glibcxx_requires_valid_range(__first, __last);
> ^
>
>
/usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/debug/debug.h:88:3:
> note: expanded from macro '__glibcxx_requires_valid_range'
> __glibcxx_check_valid_range(_First,_Last)
> ^
>
>
/usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/debug/macros.h:54:23:
> note: expanded from macro '__glibcxx_check_valid_range'
> _GLIBCXX_DEBUG_VERIFY(__gnu_debug::__valid_range(_First, _Last), \
> ^
>
>
/usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/stl_algo.h:3451:15:
> note: in call to
'min_element(&{PointerLikeTypeTraits<vector<unsigned
> char, allocator<unsigned char> > *>::NumLowBitsAvailable,
> PointerLikeTypeTraits<vector<unsigned short, allocator<unsigned
short>
> > *>::NumLowBitsAvailable,
PointerLikeTypeTraits<vector<unsigned int,
> allocator<unsigned int> > *>::NumLowBitsAvailable,
> PointerLikeTypeTraits<vector<unsigned long, allocator<unsigned
long> >
> *>::NumLowBitsAvailable}[0],
&{PointerLikeTypeTraits<vector<unsigned
> char, allocator<unsigned char> > *>::NumLowBitsAvailable,
> PointerLikeTypeTraits<vector<unsigned short, allocator<unsigned
short>
> > *>::NumLowBitsAvailable,
PointerLikeTypeTraits<vector<unsigned int,
> allocator<unsigned int> > *>::NumLowBitsAvailable,
> PointerLikeTypeTraits<vector<unsigned long, allocator<unsigned
long> >
> *>::NumLowBitsAvailable}[4])'
> { return *std::min_element(__l.begin(), __l.end()); }
> ^
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:64:12:
> note: in call to
'min({&{PointerLikeTypeTraits<vector<unsigned char,
> allocator<unsigned char> > *>::NumLowBitsAvailable,
> PointerLikeTypeTraits<vector<unsigned short, allocator<unsigned
short>
> > *>::NumLowBitsAvailable,
PointerLikeTypeTraits<vector<unsigned int,
> allocator<unsigned int> > *>::NumLowBitsAvailable,
> PointerLikeTypeTraits<vector<unsigned long, allocator<unsigned
long> >
> *>::NumLowBitsAvailable}[0], 4})'
> return
>
std::min<int>({PointerLikeTypeTraits<Ts>::NumLowBitsAvailable...});
> ^
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:93:48:
> note: in call to 'lowBitsAvailable()'
> static constexpr int NumLowBitsAvailable =
lowBitsAvailable<PTs...>();
> ^
>
>
/usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/debug/helper_functions.h:161:5:
> note: declared here
> __valid_range(const _InputIterator& __first, const
_InputIterator&
> __last)
> ^
> In file included from
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15:
> In file included from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20:
> In file included from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:18:
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:144:17:
> error: static_assert expression is not an integral constant expression
> static_assert(PtrTraits::NumLowBitsAvailable <
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:71:13:
> note: in instantiation of template class
> 'llvm::PointerIntPairInfo<void *, 2,
>
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
> *>
> >' requested here
> Value = Info::updatePointer(0, PtrVal);
> ^
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:227:15:
> note: in instantiation of member function 'llvm::PointerIntPair<void
> *, 2, int,
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
>
> *>, llvm::PointerIntPairInfo<void *, 2,
>
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
> *>
> > >::initWithPointer' requested here
> this->Val.initWithPointer(nullptr);
> ^
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:107:21:
> note: in instantiation of member function
> 'llvm::PointerUnion<std::__debug::vector<unsigned char,
> std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
>
> *>::operator=' requested here
> Other.OffsetCache = nullptr;
> ^
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:144:17:
> note: initializer of 'NumLowBitsAvailable' is not a constant
> expression
> static_assert(PtrTraits::NumLowBitsAvailable <
> ^
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:93:26:
> note: declared here
> static constexpr int NumLowBitsAvailable =
lowBitsAvailable<PTs...>();
> ^
> In file included from
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15:
> In file included from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20:
> In file included from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:18:
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:71:17:
> error: incomplete definition of type 'llvm::PointerIntPairInfo<void
*,
> 2,
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
> *>
> >'
> Value = Info::updatePointer(0, PtrVal);
> ~~~~^~
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:227:15:
> note: in instantiation of member function 'llvm::PointerIntPair<void
> *, 2, int,
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
>
> *>, llvm::PointerIntPairInfo<void *, 2,
>
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
> *>
> > >::initWithPointer' requested here
> this->Val.initWithPointer(nullptr);
> ^
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:107:21:
> note: in instantiation of member function
> 'llvm::PointerUnion<std::__debug::vector<unsigned char,
> std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
>
> *>::operator=' requested here
> Other.OffsetCache = nullptr;
> ^
> In file included from
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15:
> In file included from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20:
> In file included from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:18:
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:58:47:
> error: no member named 'getPointer' in
'llvm::PointerIntPairInfo<void
> *, 2,
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
> *>
> >'
> PointerTy getPointer() const { return Info::getPointer(Value); }
> ^
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:179:43:
> note: in instantiation of member function 'llvm::PointerIntPair<void
> *, 2, int,
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
>
> *>, llvm::PointerIntPairInfo<void *, 2,
>
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
> *>
> > >::getPointer' requested here
> bool isNull() const { return !this->Val.getPointer(); }
> ^
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:111:20:
> note: in instantiation of member function
> 'llvm::PointerUnion<std::__debug::vector<unsigned char,
> std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
>
> *>::isNull' requested here
> if (!OffsetCache.isNull()) {
> ^
> In file included from
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15:
> In file included from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20:
> In file included from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:18:
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:60:50:
> error: no member named 'getInt' in
'llvm::PointerIntPairInfo<void *,
> 2,
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
> *>
> >'
> IntType getInt() const { return (IntType)Info::getInt(Value); }
> ^
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:188:22:
> note: in instantiation of member function 'llvm::PointerIntPair<void
> *, 2, int,
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
>
> *>, llvm::PointerIntPairInfo<void *, 2,
>
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
> *>
> > >::getInt' requested here
> return this->Val.getInt() == Index;
> ^
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:112:21:
> note: in instantiation of function template specialization
> 'llvm::PointerUnion<std::__debug::vector<unsigned char,
> std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
>
> *>::is<std::__debug::vector<unsigned char,
std::allocator<unsigned
> char> > *>' requested here
> if (OffsetCache.is<std::vector<uint8_t>*>())
> ^
> In file included from
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15:
> In file included from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20:
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:195:12:
> error: no matching member function for call to 'is'
> assert(is<T>() && "Invalid accessor called");
> ^~~~~
> /usr/include/assert.h:93:27: note: expanded from macro 'assert'
> (static_cast <bool> (expr)
\
> ^~~~
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:115:26:
> note: in instantiation of function template specialization
> 'llvm::PointerUnion<std::__debug::vector<unsigned char,
> std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
>
> *>::get<std::__debug::vector<unsigned short,
std::allocator<unsigned
> short> > *>' requested here
> delete OffsetCache.get<std::vector<uint16_t>*>();
> ^
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:184:29:
> note: candidate template ignored: substitution failure [with T >
std::__debug::vector<unsigned short, std::allocator<unsigned short>
>
> *]
> template <typename T> int is() const {
> ^
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:195:12:
> error: no matching member function for call to 'is'
> assert(is<T>() && "Invalid accessor called");
> ^~~~~
> /usr/include/assert.h:93:27: note: expanded from macro 'assert'
> (static_cast <bool> (expr)
\
> ^~~~
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:117:26:
> note: in instantiation of function template specialization
> 'llvm::PointerUnion<std::__debug::vector<unsigned char,
> std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
>
> *>::get<std::__debug::vector<unsigned int,
std::allocator<unsigned
> int> > *>' requested here
> delete OffsetCache.get<std::vector<uint32_t>*>();
> ^
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:184:29:
> note: candidate template ignored: substitution failure [with T >
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *]
> template <typename T> int is() const {
> ^
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:89:27:
> error: no matching member function for call to 'get'
> Offsets = OffsetCache.get<std::vector<T> *>();
> ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:136:17:
> note: in instantiation of function template specialization
> 'llvm::SourceMgr::SrcBuffer::getLineNumber<unsigned char>'
requested
> here
> LineNo = SB.getLineNumber<uint8_t>(Ptr);
> ^
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:194:27:
> note: candidate template ignored: substitution failure [with T >
std::__debug::vector<unsigned char, std::allocator<unsigned char> >
*]
> template <typename T> T get() const {
> ^
> In file included from
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15:
> In file included from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20:
> In file included from
> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:18:
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:75:19:
> error: no member named 'updateInt' in
'llvm::PointerIntPairInfo<void
> *, 2,
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
> *>
> >'
> Value = Info::updateInt(Info::updatePointer(0, PtrVal),
> ^
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:53:5:
> note: in instantiation of member function 'llvm::PointerIntPair<void
> *, 2, int,
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
>
> *>, llvm::PointerIntPairInfo<void *, 2,
>
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
> *>
> > >::setPointerAndInt' requested here
> setPointerAndInt(PtrVal, IntVal);
> ^
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:131:19:
> note: in instantiation of member function 'llvm::PointerIntPair<void
> *, 2, int,
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
>
> *>, llvm::PointerIntPairInfo<void *, 2,
>
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
> *>
> > >::PointerIntPair' requested here
> this->Val = ValTy(
> ^
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:79:17:
> note: in instantiation of member function
>
>
'llvm::pointer_union_detail::PointerUnionMembers<llvm::PointerUnion<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
>
> *>, llvm::PointerIntPair<void *, 2, int,
>
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
>
> *>, llvm::PointerIntPairInfo<void *, 2,
>
>
llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
> char, std::allocator<unsigned char> > *,
std::__debug::vector<unsigned
> short, std::allocator<unsigned short> > *,
> std::__debug::vector<unsigned int, std::allocator<unsigned int>
> *,
> std::__debug::vector<unsigned long, std::allocator<unsigned long>
> *>
> > >, 0, std::__debug::vector<unsigned char,
std::allocator<unsigned
> char> > *, std::__debug::vector<unsigned short,
> std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int,
> std::allocator<unsigned int> > *, std::__debug::vector<unsigned
long,
> std::allocator<unsigned long> > *>::operator=' requested
here
> OffsetCache = Offsets;
> ^
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:136:17:
> note: in instantiation of function template specialization
> 'llvm::SourceMgr::SrcBuffer::getLineNumber<unsigned char>'
requested
> here
> LineNo = SB.getLineNumber<uint8_t>(Ptr);
> ^
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:89:27:
> error: no matching member function for call to 'get'
> Offsets = OffsetCache.get<std::vector<T> *>();
> ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:138:17:
> note: in instantiation of function template specialization
> 'llvm::SourceMgr::SrcBuffer::getLineNumber<unsigned short>'
requested
> here
> LineNo = SB.getLineNumber<uint16_t>(Ptr);
> ^
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:194:27:
> note: candidate template ignored: substitution failure [with T >
std::__debug::vector<unsigned short, std::allocator<unsigned short>
>
> *]
> template <typename T> T get() const {
> ^
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:89:27:
> error: no matching member function for call to 'get'
> Offsets = OffsetCache.get<std::vector<T> *>();
> ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:140:17:
> note: in instantiation of function template specialization
> 'llvm::SourceMgr::SrcBuffer::getLineNumber<unsigned int>'
requested
> here
> LineNo = SB.getLineNumber<uint32_t>(Ptr);
> ^
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:194:27:
> note: candidate template ignored: substitution failure [with T >
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *]
> template <typename T> T get() const {
> ^
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:89:27:
> error: no matching member function for call to 'get'
> Offsets = OffsetCache.get<std::vector<T> *>();
> ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:142:17:
> note: in instantiation of function template specialization
> 'llvm::SourceMgr::SrcBuffer::getLineNumber<unsigned long>'
requested
> here
> LineNo = SB.getLineNumber<uint64_t>(Ptr);
> ^
>
>
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:194:27:
> note: candidate template ignored: substitution failure [with T >
std::__debug::vector<unsigned long, std::allocator<unsigned long> >
*]
> template <typename T> T get() const {
> ^
> 12 errors generated.
>
>
> Any idea what's wrong, or what I'm doing wrong?
>
> Thanks,
> Jay.
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20190903/00fec482/attachment.html>
Hmm. What about the errors I quoted from using clang-7 (starting about a third of the way down my email, sorry if they got kinda lost in all the noise)? Thanks, Jay. On Tue, 3 Sep 2019 at 20:00, David Blaikie <dblaikie at gmail.com> wrote:> > Looks to me like a bug in GCC's constexpr+_GLIBCXX_CONCEPT_CHECKS support. Small test case: > > $ g++-8 test.cpp -std=c++2a -fsyntax-only > $ g++-8 test.cpp -std=c++2a -fsyntax-only -D_GLIBCXX_CONCEPT_CHECKS > In file included from /usr/include/c++/8/algorithm:62, > from test.cpp:1: > test.cpp:3:27: in ‘constexpr’ expansion of ‘std::min<int>(std::initializer_list<int>{((const int*)(& ._61)), 6})’ > /usr/include/c++/8/bits/stl_algo.h:3451:31: error: ‘constexpr _FIter std::min_element(_FIter, _FIter) [with _FIter = const int*]’ called in a constant expression > { return *std::min_element(__l.begin(), __l.end()); } > ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ > /usr/include/c++/8/bits/stl_algo.h:5610:12: note: ‘constexpr _FIter std::min_element(_FIter, _FIter) [with _FIter = const int*]’ is not usable as a ‘constexpr’ function because: > inline min_element(_ForwardIterator __first, _ForwardIterator __last) > ^~~~~~~~~~~ > In file included from /usr/include/c++/8/bits/move.h:34, > from /usr/include/c++/8/bits/stl_pair.h:59, > from /usr/include/c++/8/utility:70, > from /usr/include/c++/8/algorithm:60, > from test.cpp:1: > /usr/include/c++/8/bits/stl_algo.h:5613:7: error: call to non-‘constexpr’ function ‘void __gnu_cxx::__function_requires() [with _Concept = __gnu_cxx::_ForwardIteratorConcept<const int*>]’ > __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) > ^~~~~~~~~~~~~~~~~~~~~~~~~~~ > > On Tue, Sep 3, 2019 at 7:10 AM Jay Foad via llvm-dev <llvm-dev at lists.llvm.org> wrote: >> >> Hi, >> >> I'm trying to build llvm (git monorepo) on Ubuntu 18.04 with >> EXPENSIVE_CHECKS enabled and running into various errors compiling >> SourceMgr.cpp, depending on which host compiler I use. >> >> For example with GCC: >> >> $ CC=gcc-8 CXX=g++-8 cmake -GNinja -DCMAKE_BUILD_TYPE=Debug >> -DLLVM_ENABLE_EXPENSIVE_CHECKS=ON ~/git/llvm-project/llvm/ && ninja >> ... >> [89/2690] Building CXX object >> lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o >> FAILED: lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o >> /usr/lib/ccache/g++-8 -DEXPENSIVE_CHECKS -DGTEST_HAS_RTTI=0 -D_DEBUG >> -D_GLIBCXX_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS >> -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Ilib/Support >> -I/home/jayfoad2/git/llvm-project/llvm/lib/Support -Iinclude >> -I/home/jayfoad2/git/llvm-project/llvm/incl >> ude -fPIC -fvisibility-inlines-hidden -Werror=date-time -std=c++14 >> -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual >> -Wno-missing-field-initializers -pedantic -Wno-long-long >> -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-class-memaccess >> -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wno-comment >> -fdiagnostics-color -g -fno-exceptions -fno-rtti -MD -MT >> lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o -MF >> lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o.d -o >> lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o -c >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp >> In file included from /usr/include/c++/8/algorithm:62, >> from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/MathExtras.h:18, >> from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/SmallVector.h:19, >> from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/STLExtras.h:20, >> from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/StringRef.h:12, >> from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/StringMap.h:16, >> from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/Host.h:16, >> from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/Hashing.h:48, >> from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/ArrayRef.h:12, >> from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:18, >> from >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15: >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h: >> In instantiation of ‘constexpr const int >> llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> >*, std::__debug::vector<short >> unsigned int, std::allocator<short unsigned int> >*, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> >*, >> std::__debug::vector<long unsigned int, std::allocator<long unsigned >> int> >*>::NumLowBitsAvailable’: >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:144:48: >> required from ‘struct llvm::PointerIntPairInfo<void*, 2, >> llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> >*, std::__debug::vector<short >> unsigned int, std::allocator<short unsigned int> >*, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> >*, >> std::__debug::vector<long unsigned int, std::allocator<long unsigned >> int> >*> >’ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:71:32: >> required from ‘void llvm::PointerIntPair<PointerTy, IntBits, >> IntType, PtrTraits, Info>::initWithPointer(PointerTy) [with PointerTy >> = void*; unsigned int IntBits = 2; IntType = int; PtrTraits >> llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> >*, std::__debug::vector<short >> unsigned int, std::allocator<short unsigned int> >*, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> >*, >> std::__debug::vector<long unsigned int, std::allocator<long unsigned >> int> >*>; Info = llvm::PointerIntPairInfo<void*, 2, >> llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> >*, std::__debug::vector<short >> unsigned int, std::allocator<short unsigned int> >*, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> >*, >> std::__debug::vector<long unsigned int, std::allocator<long unsigned >> int> >*> >]’ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:227:5: >> required from ‘const llvm::PointerUnion<PTs>& >> llvm::PointerUnion<PTs>::operator=(std::nullptr_t) [with PTs >> {std::__debug::vector<unsigned char, std::allocator<unsigned char> >*, >> std::__debug::vector<short unsigned int, std::allocator<short unsigned >> int> >*, std::__debug::vector<unsigned int, std::allocator<unsigned >> int> >*, std::__debug::vector<long unsigned int, std::allocator<long >> unsigned int> >*}; std::nullptr_t = std::nullptr_t]’ >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:107:23: >> required from here >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:93:72: >> in ‘constexpr’ expansion of >> ‘llvm::pointer_union_detail::lowBitsAvailable<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> >*, std::__debug::vector<short >> unsigned int, std::allocator<short unsigned int> >*, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> >*, >> std::__debug::vector<long unsigned int, std::allocator<long unsigned >> int> >*>()’ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:64:25: >> in ‘constexpr’ expansion of >> ‘std::min<int>(std::initializer_list<int>{((const int*)(& ._125)), >> 4})’ >> /usr/include/c++/8/bits/stl_algo.h:3451:31: error: ‘constexpr _FIter >> std::min_element(_FIter, _FIter) [with _FIter = const int*]’ called in >> a constant expression >> { return *std::min_element(__l.begin(), __l.end()); } >> ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ >> /usr/include/c++/8/bits/stl_algo.h:5610:12: note: ‘constexpr _FIter >> std::min_element(_FIter, _FIter) [with _FIter = const int*]’ is not >> usable as a ‘constexpr’ function because: >> inline min_element(_ForwardIterator __first, _ForwardIterator __last) >> ^~~~~~~~~~~ >> In file included from /usr/include/c++/8/debug/debug.h:84, >> from /usr/include/c++/8/bits/stl_algobase.h:69, >> from /usr/include/c++/8/memory:62, >> from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/Optional.h:22, >> from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/STLExtras.h:19, >> from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/StringRef.h:12, >> from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/StringMap.h:16, >> from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/Host.h:16, >> from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/Hashing.h:48, >> from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/ArrayRef.h:12, >> from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:18, >> from >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15: >> /usr/include/c++/8/bits/stl_algo.h:5616:7: error: call to >> non-‘constexpr’ function ‘bool __gnu_debug::__valid_range(const >> _InputIterator&, const _InputIterator&) [with _InputIterator = const >> int*]’ >> __glibcxx_requires_valid_range(__first, __last); >> ^ >> In file included from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:18, >> from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20, >> from >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15: >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h: >> In instantiation of ‘struct llvm::PointerIntPairInfo<void*, 2, >> llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> >*, std::__debug::vector<short >> unsigned int, std::allocator<short unsigned int> >*, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> >*, >> std::__debug::vector<long unsigned int, std::allocator<long unsigned >> int> >*> >’: >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:71:32: >> required from ‘void llvm::PointerIntPair<PointerTy, IntBits, >> IntType, PtrTraits, Info>::initWithPointer(PointerTy) [with PointerTy >> = void*; unsigned int IntBits = 2; IntType = int; PtrTraits >> llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> >*, std::__debug::vector<short >> unsigned int, std::allocator<short unsigned int> >*, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> >*, >> std::__debug::vector<long unsigned int, std::allocator<long unsigned >> int> >*>; Info = llvm::PointerIntPairInfo<void*, 2, >> llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> >*, std::__debug::vector<short >> unsigned int, std::allocator<short unsigned int> >*, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> >*, >> std::__debug::vector<long unsigned int, std::allocator<long unsigned >> int> >*> >]’ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:227:5: >> required from ‘const llvm::PointerUnion<PTs>& >> llvm::PointerUnion<PTs>::operator=(std::nullptr_t) [with PTs >> {std::__debug::vector<unsigned char, std::allocator<unsigned char> >*, >> std::__debug::vector<short unsigned int, std::allocator<short unsigned >> int> >*, std::__debug::vector<unsigned int, std::allocator<unsigned >> int> >*, std::__debug::vector<long unsigned int, std::allocator<long >> unsigned int> >*}; std::nullptr_t = std::nullptr_t]’ >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:107:23: >> required from here >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:149:8: >> error: enumerator value for ‘IntShift’ is not an integer constant >> enum : uintptr_t { >> ^ >> >> >> For example with Clang: >> >> $ CC=clang-7 CXX=clang++-7 cmake -GNinja -DCMAKE_BUILD_TYPE=Debug >> -DLLVM_ENABLE_EXPENSIVE_CHECKS=ON ~/git/llvm-project/llvm/ && ninja >> [...] >> [91/2690] Building CXX object >> lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o >> FAILED: lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o >> /usr/bin/clang++-7 -DEXPENSIVE_CHECKS -DGTEST_HAS_RTTI=0 -D_DEBUG >> -D_GLIBCXX_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS >> -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Ilib/Support >> -I/home/jayfoad2/git/llvm-project/llvm/lib/Support -Iinclude >> -I/home/jayfoad2/git/llvm-project/llvm/include -fPIC >> -fvisibility-inlines-hidden -Werror=date-time >> -Werror=unguarded-availability-new -std=c++14 -Wall -Wextra >> -Wno-unused-parameter -Wwrite-strings -Wcast-qual >> -Wmissing-field-initializers -pedantic -Wno-long-long >> -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type >> -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion >> -fdiagnostics-color -g -fno-exceptions -fno-rtti -MD -MT >> lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o -MF >> lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o.d -o >> lib/Support/CMakeFiles/LLVMSupport.dir/SourceMgr.cpp.o -c >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp >> In file included from >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15: >> In file included from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20: >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:93:26: >> error: constexpr variable 'NumLowBitsAvailable' must be initialized by >> a constant expression >> static constexpr int NumLowBitsAvailable = lowBitsAvailable<PTs...>(); >> ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:144:17: >> note: in instantiation of template class >> 'llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > >> *>' requested here >> static_assert(PtrTraits::NumLowBitsAvailable < >> ^ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:71:13: >> note: in instantiation of template class >> 'llvm::PointerIntPairInfo<void *, 2, >> llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > *> >> >' requested here >> Value = Info::updatePointer(0, PtrVal); >> ^ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:227:15: >> note: in instantiation of member function 'llvm::PointerIntPair<void >> *, 2, int, llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > >> *>, llvm::PointerIntPairInfo<void *, 2, >> llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > *> >> > >::initWithPointer' requested here >> this->Val.initWithPointer(nullptr); >> ^ >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:107:21: >> note: in instantiation of member function >> 'llvm::PointerUnion<std::__debug::vector<unsigned char, >> std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > >> *>::operator=' requested here >> Other.OffsetCache = nullptr; >> ^ >> /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/stl_algo.h:5616:7: >> note: non-constexpr function '__valid_range<const int *>' cannot be >> used in a constant expression >> __glibcxx_requires_valid_range(__first, __last); >> ^ >> /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/debug/debug.h:88:3: >> note: expanded from macro '__glibcxx_requires_valid_range' >> __glibcxx_check_valid_range(_First,_Last) >> ^ >> /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/debug/macros.h:54:23: >> note: expanded from macro '__glibcxx_check_valid_range' >> _GLIBCXX_DEBUG_VERIFY(__gnu_debug::__valid_range(_First, _Last), \ >> ^ >> /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/stl_algo.h:3451:15: >> note: in call to 'min_element(&{PointerLikeTypeTraits<vector<unsigned >> char, allocator<unsigned char> > *>::NumLowBitsAvailable, >> PointerLikeTypeTraits<vector<unsigned short, allocator<unsigned short> >> > *>::NumLowBitsAvailable, PointerLikeTypeTraits<vector<unsigned int, >> allocator<unsigned int> > *>::NumLowBitsAvailable, >> PointerLikeTypeTraits<vector<unsigned long, allocator<unsigned long> > >> *>::NumLowBitsAvailable}[0], &{PointerLikeTypeTraits<vector<unsigned >> char, allocator<unsigned char> > *>::NumLowBitsAvailable, >> PointerLikeTypeTraits<vector<unsigned short, allocator<unsigned short> >> > *>::NumLowBitsAvailable, PointerLikeTypeTraits<vector<unsigned int, >> allocator<unsigned int> > *>::NumLowBitsAvailable, >> PointerLikeTypeTraits<vector<unsigned long, allocator<unsigned long> > >> *>::NumLowBitsAvailable}[4])' >> { return *std::min_element(__l.begin(), __l.end()); } >> ^ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:64:12: >> note: in call to 'min({&{PointerLikeTypeTraits<vector<unsigned char, >> allocator<unsigned char> > *>::NumLowBitsAvailable, >> PointerLikeTypeTraits<vector<unsigned short, allocator<unsigned short> >> > *>::NumLowBitsAvailable, PointerLikeTypeTraits<vector<unsigned int, >> allocator<unsigned int> > *>::NumLowBitsAvailable, >> PointerLikeTypeTraits<vector<unsigned long, allocator<unsigned long> > >> *>::NumLowBitsAvailable}[0], 4})' >> return std::min<int>({PointerLikeTypeTraits<Ts>::NumLowBitsAvailable...}); >> ^ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:93:48: >> note: in call to 'lowBitsAvailable()' >> static constexpr int NumLowBitsAvailable = lowBitsAvailable<PTs...>(); >> ^ >> /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/debug/helper_functions.h:161:5: >> note: declared here >> __valid_range(const _InputIterator& __first, const _InputIterator& __last) >> ^ >> In file included from >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15: >> In file included from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20: >> In file included from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:18: >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:144:17: >> error: static_assert expression is not an integral constant expression >> static_assert(PtrTraits::NumLowBitsAvailable < >> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:71:13: >> note: in instantiation of template class >> 'llvm::PointerIntPairInfo<void *, 2, >> llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > *> >> >' requested here >> Value = Info::updatePointer(0, PtrVal); >> ^ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:227:15: >> note: in instantiation of member function 'llvm::PointerIntPair<void >> *, 2, int, llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > >> *>, llvm::PointerIntPairInfo<void *, 2, >> llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > *> >> > >::initWithPointer' requested here >> this->Val.initWithPointer(nullptr); >> ^ >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:107:21: >> note: in instantiation of member function >> 'llvm::PointerUnion<std::__debug::vector<unsigned char, >> std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > >> *>::operator=' requested here >> Other.OffsetCache = nullptr; >> ^ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:144:17: >> note: initializer of 'NumLowBitsAvailable' is not a constant >> expression >> static_assert(PtrTraits::NumLowBitsAvailable < >> ^ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:93:26: >> note: declared here >> static constexpr int NumLowBitsAvailable = lowBitsAvailable<PTs...>(); >> ^ >> In file included from >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15: >> In file included from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20: >> In file included from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:18: >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:71:17: >> error: incomplete definition of type 'llvm::PointerIntPairInfo<void *, >> 2, llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > *> >> >' >> Value = Info::updatePointer(0, PtrVal); >> ~~~~^~ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:227:15: >> note: in instantiation of member function 'llvm::PointerIntPair<void >> *, 2, int, llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > >> *>, llvm::PointerIntPairInfo<void *, 2, >> llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > *> >> > >::initWithPointer' requested here >> this->Val.initWithPointer(nullptr); >> ^ >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:107:21: >> note: in instantiation of member function >> 'llvm::PointerUnion<std::__debug::vector<unsigned char, >> std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > >> *>::operator=' requested here >> Other.OffsetCache = nullptr; >> ^ >> In file included from >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15: >> In file included from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20: >> In file included from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:18: >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:58:47: >> error: no member named 'getPointer' in 'llvm::PointerIntPairInfo<void >> *, 2, llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > *> >> >' >> PointerTy getPointer() const { return Info::getPointer(Value); } >> ^ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:179:43: >> note: in instantiation of member function 'llvm::PointerIntPair<void >> *, 2, int, llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > >> *>, llvm::PointerIntPairInfo<void *, 2, >> llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > *> >> > >::getPointer' requested here >> bool isNull() const { return !this->Val.getPointer(); } >> ^ >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:111:20: >> note: in instantiation of member function >> 'llvm::PointerUnion<std::__debug::vector<unsigned char, >> std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > >> *>::isNull' requested here >> if (!OffsetCache.isNull()) { >> ^ >> In file included from >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15: >> In file included from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20: >> In file included from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:18: >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:60:50: >> error: no member named 'getInt' in 'llvm::PointerIntPairInfo<void *, >> 2, llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > *> >> >' >> IntType getInt() const { return (IntType)Info::getInt(Value); } >> ^ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:188:22: >> note: in instantiation of member function 'llvm::PointerIntPair<void >> *, 2, int, llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > >> *>, llvm::PointerIntPairInfo<void *, 2, >> llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > *> >> > >::getInt' requested here >> return this->Val.getInt() == Index; >> ^ >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:112:21: >> note: in instantiation of function template specialization >> 'llvm::PointerUnion<std::__debug::vector<unsigned char, >> std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > >> *>::is<std::__debug::vector<unsigned char, std::allocator<unsigned >> char> > *>' requested here >> if (OffsetCache.is<std::vector<uint8_t>*>()) >> ^ >> In file included from >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15: >> In file included from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20: >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:195:12: >> error: no matching member function for call to 'is' >> assert(is<T>() && "Invalid accessor called"); >> ^~~~~ >> /usr/include/assert.h:93:27: note: expanded from macro 'assert' >> (static_cast <bool> (expr) \ >> ^~~~ >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:115:26: >> note: in instantiation of function template specialization >> 'llvm::PointerUnion<std::__debug::vector<unsigned char, >> std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > >> *>::get<std::__debug::vector<unsigned short, std::allocator<unsigned >> short> > *>' requested here >> delete OffsetCache.get<std::vector<uint16_t>*>(); >> ^ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:184:29: >> note: candidate template ignored: substitution failure [with T >> std::__debug::vector<unsigned short, std::allocator<unsigned short> > >> *] >> template <typename T> int is() const { >> ^ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:195:12: >> error: no matching member function for call to 'is' >> assert(is<T>() && "Invalid accessor called"); >> ^~~~~ >> /usr/include/assert.h:93:27: note: expanded from macro 'assert' >> (static_cast <bool> (expr) \ >> ^~~~ >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:117:26: >> note: in instantiation of function template specialization >> 'llvm::PointerUnion<std::__debug::vector<unsigned char, >> std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > >> *>::get<std::__debug::vector<unsigned int, std::allocator<unsigned >> int> > *>' requested here >> delete OffsetCache.get<std::vector<uint32_t>*>(); >> ^ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:184:29: >> note: candidate template ignored: substitution failure [with T >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *] >> template <typename T> int is() const { >> ^ >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:89:27: >> error: no matching member function for call to 'get' >> Offsets = OffsetCache.get<std::vector<T> *>(); >> ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:136:17: >> note: in instantiation of function template specialization >> 'llvm::SourceMgr::SrcBuffer::getLineNumber<unsigned char>' requested >> here >> LineNo = SB.getLineNumber<uint8_t>(Ptr); >> ^ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:194:27: >> note: candidate template ignored: substitution failure [with T >> std::__debug::vector<unsigned char, std::allocator<unsigned char> > *] >> template <typename T> T get() const { >> ^ >> In file included from >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:15: >> In file included from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/Support/SourceMgr.h:20: >> In file included from >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:18: >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:75:19: >> error: no member named 'updateInt' in 'llvm::PointerIntPairInfo<void >> *, 2, llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > *> >> >' >> Value = Info::updateInt(Info::updatePointer(0, PtrVal), >> ^ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:53:5: >> note: in instantiation of member function 'llvm::PointerIntPair<void >> *, 2, int, llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > >> *>, llvm::PointerIntPairInfo<void *, 2, >> llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > *> >> > >::setPointerAndInt' requested here >> setPointerAndInt(PtrVal, IntVal); >> ^ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:131:19: >> note: in instantiation of member function 'llvm::PointerIntPair<void >> *, 2, int, llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > >> *>, llvm::PointerIntPairInfo<void *, 2, >> llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > *> >> > >::PointerIntPair' requested here >> this->Val = ValTy( >> ^ >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:79:17: >> note: in instantiation of member function >> 'llvm::pointer_union_detail::PointerUnionMembers<llvm::PointerUnion<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > >> *>, llvm::PointerIntPair<void *, 2, int, >> llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > >> *>, llvm::PointerIntPairInfo<void *, 2, >> llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned >> char, std::allocator<unsigned char> > *, std::__debug::vector<unsigned >> short, std::allocator<unsigned short> > *, >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *, >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > *> >> > >, 0, std::__debug::vector<unsigned char, std::allocator<unsigned >> char> > *, std::__debug::vector<unsigned short, >> std::allocator<unsigned short> > *, std::__debug::vector<unsigned int, >> std::allocator<unsigned int> > *, std::__debug::vector<unsigned long, >> std::allocator<unsigned long> > *>::operator=' requested here >> OffsetCache = Offsets; >> ^ >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:136:17: >> note: in instantiation of function template specialization >> 'llvm::SourceMgr::SrcBuffer::getLineNumber<unsigned char>' requested >> here >> LineNo = SB.getLineNumber<uint8_t>(Ptr); >> ^ >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:89:27: >> error: no matching member function for call to 'get' >> Offsets = OffsetCache.get<std::vector<T> *>(); >> ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:138:17: >> note: in instantiation of function template specialization >> 'llvm::SourceMgr::SrcBuffer::getLineNumber<unsigned short>' requested >> here >> LineNo = SB.getLineNumber<uint16_t>(Ptr); >> ^ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:194:27: >> note: candidate template ignored: substitution failure [with T >> std::__debug::vector<unsigned short, std::allocator<unsigned short> > >> *] >> template <typename T> T get() const { >> ^ >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:89:27: >> error: no matching member function for call to 'get' >> Offsets = OffsetCache.get<std::vector<T> *>(); >> ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:140:17: >> note: in instantiation of function template specialization >> 'llvm::SourceMgr::SrcBuffer::getLineNumber<unsigned int>' requested >> here >> LineNo = SB.getLineNumber<uint32_t>(Ptr); >> ^ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:194:27: >> note: candidate template ignored: substitution failure [with T >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *] >> template <typename T> T get() const { >> ^ >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:89:27: >> error: no matching member function for call to 'get' >> Offsets = OffsetCache.get<std::vector<T> *>(); >> ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ >> /home/jayfoad2/git/llvm-project/llvm/lib/Support/SourceMgr.cpp:142:17: >> note: in instantiation of function template specialization >> 'llvm::SourceMgr::SrcBuffer::getLineNumber<unsigned long>' requested >> here >> LineNo = SB.getLineNumber<uint64_t>(Ptr); >> ^ >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:194:27: >> note: candidate template ignored: substitution failure [with T >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > *] >> template <typename T> T get() const { >> ^ >> 12 errors generated. >> >> >> Any idea what's wrong, or what I'm doing wrong? >> >> Thanks, >> Jay. >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev