mstorsjo wrote:

This change causes a bunch of very loud/verbose warnings when building LLVM 
with GCC (at least with GCC 9, in Ubuntu 20.04).

Building with GCC isn't anywhere near free of warnings anyway, but this 
produces warnings even when building as small things as `llvm-tblgen`. If cross 
compiling LLVM, it builds the `llvm-min-tblgen`, `llvm-tblgen` and `*-tblgen` 
binaries as native binaries with the system default compiler - so this makes 
these loud warnings appear even in that case, even if doing the main cross 
build with Clang.

The warnings look like this:
```
[209/214] Building CXX object 
lib/Support/CMakeFiles/LLVMSupport.dir/BalancedPartitioning.cpp.o
In file included from 
/home/martin/code/llvm-project/llvm/include/llvm/Support/FormatCommon.h:13,
                 from 
/home/martin/code/llvm-project/llvm/include/llvm/Support/FormatVariadic.h:34,
                 from 
/home/martin/code/llvm-project/llvm/lib/Support/BalancedPartitioning.cpp:18:
/home/martin/code/llvm-project/llvm/include/llvm/Support/FormatVariadicDetails.h:
 In instantiation of ‘void 
llvm::support::detail::FormatFunctor<T>::operator()(llvm::raw_ostream&, 
llvm::StringRef) [with T = const std::optional<unsigned int>&]’:
/home/martin/code/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:52:
   required from ‘static Ret llvm::function_ref<Ret(Params 
...)>::callback_fn(intptr_t, Params ...) [with Callable = 
llvm::support::detail::FormatFunctor<const std::optional<unsigned int>&>; Ret = 
void; Params = {llvm::raw_ostream&, llvm::StringRef}; intptr_t = long int]’
/home/martin/code/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:66:55:
   required from ‘llvm::function_ref<Ret(Params ...)>::function_ref(Callable&&, 
std::enable_if_t<(! std::is_same<typename llvm::remove_cvref<Callable>::type, 
llvm::function_ref<Ret(Params ...)> >::value)>*, 
std::enable_if_t<(std::is_void<_Tp>::value || std::is_convertible<decltype 
(declval<Callable>()((declval<Params>)()...)), Ret>::value)>*) [with Callable = 
llvm::support::detail::FormatFunctor<const std::optional<unsigned int>&>&; Ret 
= void; Params = {llvm::raw_ostream&, llvm::StringRef}; std::enable_if_t<(! 
std::is_same<typename llvm::remove_cvref<Callable>::type, 
llvm::function_ref<Ret(Params ...)> >::value)> = void; 
std::enable_if_t<(std::is_void<_Tp>::value || std::is_convertible<decltype 
(declval<Callable>()((declval<Params>)()...)), Ret>::value)> = void]’
/home/martin/code/llvm-project/llvm/include/llvm/Support/FormatVariadic.h:137:25:
   required from ‘std::array<llvm::function_ref<void(llvm::raw_ostream&, 
llvm::StringRef)>, std::tuple_size<_Tp>::value> 
llvm::formatv_object<Tuple>::create_adapters::operator()(Ts& ...) [with Ts = 
{llvm::support::detail::FormatFunctor<const long unsigned int&>, 
llvm::support::detail::FormatFunctor<llvm::iterator_range<const unsigned int*> 
>, llvm::support::detail::FormatFunctor<const std::optional<unsigned int>&>}; 
Tuple = std::tuple<llvm::support::detail::FormatFunctor<const long unsigned 
int&>, llvm::support::detail::FormatFunctor<llvm::iterator_range<const unsigned 
int*> >, llvm::support::detail::FormatFunctor<const std::optional<unsigned 
int>&> >]’
/usr/include/c++/9/bits/invoke.h:60:36:   required from ‘constexpr _Res 
std::__invoke_impl(std::__invoke_other, _Fn&&, _Args&& ...) [with _Res = 
std::array<llvm::function_ref<void(llvm::raw_ostream&, llvm::StringRef)>, 3>; 
_Fn = 
llvm::formatv_object<std::tuple<llvm::support::detail::FormatFunctor<const long 
unsigned int&>, llvm::support::detail::FormatFunctor<llvm::iterator_range<const 
unsigned int*> >, llvm::support::detail::FormatFunctor<const 
std::optional<unsigned int>&> > >::create_adapters; _Args = 
{llvm::support::detail::FormatFunctor<const long unsigned int&>&, 
llvm::support::detail::FormatFunctor<llvm::iterator_range<const unsigned int*> 
>&, llvm::support::detail::FormatFunctor<const std::optional<unsigned int>&>&}]’
/usr/include/c++/9/bits/invoke.h:95:40:   required from ‘constexpr typename 
std::__invoke_result<_Functor, _ArgTypes>::type std::__invoke(_Callable&&, 
_Args&& ...) [with _Callable = 
llvm::formatv_object<std::tuple<llvm::support::detail::FormatFunctor<const long 
unsigned int&>, llvm::support::detail::FormatFunctor<llvm::iterator_range<const 
unsigned int*> >, llvm::support::detail::FormatFunctor<const 
std::optional<unsigned int>&> > >::create_adapters; _Args = 
{llvm::support::detail::FormatFunctor<const long unsigned int&>&, 
llvm::support::detail::FormatFunctor<llvm::iterator_range<const unsigned int*> 
>&, llvm::support::detail::FormatFunctor<const std::optional<unsigned int>&>&}; 
typename std::__invoke_result<_Functor, _ArgTypes>::type = 
std::array<llvm::function_ref<void(llvm::raw_ostream&, llvm::StringRef)>, 3>]’
/usr/include/c++/9/tuple:1684:27:   required from ‘constexpr decltype(auto) 
std::__apply_impl(_Fn&&, _Tuple&&, std::index_sequence<_Idx ...>) [with _Fn = 
llvm::formatv_object<std::tuple<llvm::support::detail::FormatFunctor<const long 
unsigned int&>, llvm::support::detail::FormatFunctor<llvm::iterator_range<const 
unsigned int*> >, llvm::support::detail::FormatFunctor<const 
std::optional<unsigned int>&> > >::create_adapters; _Tuple = 
std::tuple<llvm::support::detail::FormatFunctor<const long unsigned int&>, 
llvm::support::detail::FormatFunctor<llvm::iterator_range<const unsigned int*> 
>, llvm::support::detail::FormatFunctor<const std::optional<unsigned int>&> >&; 
long unsigned int ..._Idx = {0, 1, 2}; std::index_sequence<_Idx ...> = 
std::integer_sequence<long unsigned int, 0, 1, 2>]’
/usr/include/c++/9/tuple:1694:31:   required from ‘constexpr decltype(auto) 
std::apply(_Fn&&, _Tuple&&) [with _Fn = 
llvm::formatv_object<std::tuple<llvm::support::detail::FormatFunctor<const long 
unsigned int&>, llvm::support::detail::FormatFunctor<llvm::iterator_range<const 
unsigned int*> >, llvm::support::detail::FormatFunctor<const 
std::optional<unsigned int>&> > >::create_adapters; _Tuple = 
std::tuple<llvm::support::detail::FormatFunctor<const long unsigned int&>, 
llvm::support::detail::FormatFunctor<llvm::iterator_range<const unsigned int*> 
>, llvm::support::detail::FormatFunctor<const std::optional<unsigned int>&> >&]’
/home/martin/code/llvm-project/llvm/include/llvm/Support/FormatVariadic.h:145:35:
   required from ‘llvm::formatv_object<Tuple>::formatv_object(llvm::StringRef, 
Tuple&&, bool) [with Tuple = 
std::tuple<llvm::support::detail::FormatFunctor<const long unsigned int&>, 
llvm::support::detail::FormatFunctor<llvm::iterator_range<const unsigned int*> 
>, llvm::support::detail::FormatFunctor<const std::optional<unsigned int>&> >]’
/home/martin/code/llvm-project/llvm/include/llvm/Support/FormatVariadic.h:250:10:
   required from ‘auto llvm::formatv(bool, const char*, Ts&& ...) [with Ts = 
{const long unsigned int&, llvm::iterator_range<const unsigned int*>, const 
std::optional<unsigned int>&}]’
/home/martin/code/llvm-project/llvm/include/llvm/Support/FormatVariadic.h:255:24:
   required from ‘auto llvm::formatv(const char*, Ts&& ...) [with Ts = {const 
long unsigned int&, llvm::iterator_range<const unsigned int*>, const 
std::optional<unsigned int>&}]’
/home/martin/code/llvm-project/llvm/lib/Support/BalancedPartitioning.cpp:26:77: 
  required from here
/home/martin/code/llvm-project/llvm/include/llvm/Support/FormatVariadicDetails.h:66:51:
 warning: parameter ‘Options’ set but not used [-Wunused-but-set-parameter]
   66 |   void operator()(llvm::raw_ostream &S, StringRef Options) {
      |                                         ~~~~~~~~~~^~~~~~~
cc1plus: warning: unrecognized command line option ‘-Wno-c99-extensions’
```

(With this warning repeated 4 times.)

https://github.com/llvm/llvm-project/pull/207516
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to