https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78627
Bug ID: 78627 Summary: [7 Regression] r243036 causes Firefox build failure Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: trippels at gcc dot gnu.org CC: ville at gcc dot gnu.org Target Milestone: --- Since r243036: trippels@gcc2-power8 thebes % g++ -w -c Unified_cpp_gfx_thebes0.ii In file included from ../../dist/system_wrappers/ostream:4:0, from ../../dist/stl_wrappers/ostream:55, from /home/trippels/gcc_test/usr/local/include/c++/7.0.0/istream:39, from /home/trippels/gcc_test/usr/local/include/c++/7.0.0/sstream:38, from ../../dist/system_wrappers/sstream:4, from ../../dist/include/mozilla/ToString.h:13, from ../../dist/include/mozilla/gfx/BasePoint.h:11, from /home/trippels/gecko-dev/gfx/thebes/gfxPoint.h:11, from /home/trippels/gecko-dev/gfx/thebes/gfxMatrix.h:9, from /home/trippels/gecko-dev/gfx/thebes/gfx3DMatrix.cpp:6, from /home/trippels/moz-build-dir/gfx/thebes/Unified_cpp_gfx_thebes0.cpp:2: /home/trippels/gcc_test/usr/local/include/c++/7.0.0/ostream: In instantiation of ‘struct std::__is_convertible_to_basic_ostream<const mozilla::EmptyLog&>’: /home/trippels/gcc_test/usr/local/include/c++/7.0.0/ostream:656:5: required by substitution of ‘template<class _Ostream, class _Tp> typename std::enable_if<std::__and_<std::__not_<std::is_lvalue_reference<_Tp> >, std::__is_convertible_to_basic_ostream<_Ostream>, std::__is_insertable<_Ostream&, const _Tp&, void> >::value, typename std::__is_convertible_to_basic_ostream<_Tp>::ostream_type>::type std::operator<<(_Ostream&&, const _Tp&) [with _Ostream = const mozilla::EmptyLog&; _Tp = unsigned int]’ /home/trippels/gecko-dev/ipc/chromium/src/chrome/common/ipc_message_utils.h:1055:94: required from here /home/trippels/gcc_test/usr/local/include/c++/7.0.0/ostream:625:23: error: no matching function for call to ‘std::__is_convertible_to_basic_ostream<const mozilla::EmptyLog&>::__check(const mozilla::EmptyLog*)’ decltype(__check(declval<typename remove_reference<_Tp>::type*>())); ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/trippels/gcc_test/usr/local/include/c++/7.0.0/ostream:620:37: note: candidate: template<class _Ch, class _Up> static std::basic_ostream<_Ch, _Up>& std::__is_convertible_to_basic_ostream<_Tp>::__check(std::basic_ostream<_Ch, _Up>*) [with _Ch = _Ch; _Up = _Up; _Tp = const mozilla::EmptyLog&] static basic_ostream<_Ch, _Up>& __check(basic_ostream<_Ch, _Up>*); ^~~~~~~ /home/trippels/gcc_test/usr/local/include/c++/7.0.0/ostream:620:37: note: template argument deduction/substitution failed: /home/trippels/gcc_test/usr/local/include/c++/7.0.0/ostream:625:23: note: types ‘std::basic_ostream<_CharT, _Traits>’ and ‘const mozilla::EmptyLog’ have incompatible cv-qualifiers decltype(__check(declval<typename remove_reference<_Tp>::type*>())); ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/trippels/gcc_test/usr/local/include/c++/7.0.0/ostream:622:23: note: candidate: static const void std::__is_convertible_to_basic_ostream<_Tp>::__check(void*) [with _Tp = const mozilla::EmptyLog&] <near match> static void __check(void*); ^~~~~~~ /home/trippels/gcc_test/usr/local/include/c++/7.0.0/ostream:622:23: note: conversion of argument 1 would be ill-formed: /home/trippels/gcc_test/usr/local/include/c++/7.0.0/ostream:625:23: error: invalid conversion from ‘const void*’ to ‘void*’ [-fpermissive] decltype(__check(declval<typename remove_reference<_Tp>::type*>())); ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/trippels/gcc_test/usr/local/include/c++/7.0.0/ostream:625:23: error: no matching function for call to ‘std::__is_convertible_to_basic_ostream<const mozilla::EmptyLog&>::__check(const mozilla::EmptyLog*)’ /home/trippels/gcc_test/usr/local/include/c++/7.0.0/ostream:620:37: note: candidate: template<class _Ch, class _Up> static std::basic_ostream<_Ch, _Up>& std::__is_convertible_to_basic_ostream<_Tp>::__check(std::basic_ostream<_Ch, _Up>*) [with _Ch = _Ch; _Up = _Up; _Tp = const mozilla::EmptyLog&] static basic_ostream<_Ch, _Up>& __check(basic_ostream<_Ch, _Up>*); ^~~~~~~ /home/trippels/gcc_test/usr/local/include/c++/7.0.0/ostream:620:37: note: template argument deduction/substitution failed: /home/trippels/gcc_test/usr/local/include/c++/7.0.0/ostream:625:23: note: types ‘std::basic_ostream<_CharT, _Traits>’ and ‘const mozilla::EmptyLog’ have incompatible cv-qualifiers decltype(__check(declval<typename remove_reference<_Tp>::type*>())); ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/trippels/gcc_test/usr/local/include/c++/7.0.0/ostream:622:23: note: candidate: static const void std::__is_convertible_to_basic_ostream<_Tp>::__check(void*) [with _Tp = const mozilla::EmptyLog&] <near match> static void __check(void*); ^~~~~~~ /home/trippels/gcc_test/usr/local/include/c++/7.0.0/ostream:622:23: note: conversion of argument 1 would be ill-formed: /home/trippels/gcc_test/usr/local/include/c++/7.0.0/ostream:625:23: error: invalid conversion from ‘const void*’ to ‘void*’ [-fpermissive] decltype(__check(declval<typename remove_reference<_Tp>::type*>())); ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~