Created attachment 51443 [details] Preprocessed output of the failing test. I'm seeing ICE with gcc 10.3.0 and gcc 11.1.0 when compiling Boost.Log tests that use Boost.Xpressive. The ICE points at Boost.Xpressive code: $ "g++-10" -save-temps -ftemplate-depth-1024 -std=c++03 -fPIC -m64 -pthread -O0 -fno-inline -Wall -g -fno-strict-aliasing -DBOOST_ALL_NO_LIB=1 -DBOOST_ATOMIC_DYN_LINK=1 -DBOOST_CHRONO_DYN_LINK=1 -DBOOST_FILESYSTEM_DYN_LINK=1 -DBOOST_LOG_DYN_LINK=1 -DBOOST_LOG_SETUP_DYN_LINK=1 -DBOOST_LOG_USE_AVX2 -DBOOST_LOG_USE_SSSE3 -DBOOST_TEST_DYN_LINK=1 -DBOOST_TEST_NO_AUTO_LINK=1 -DBOOST_THREAD_BUILD_DLL=1 -DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_DLL=1 -D_XOPEN_SOURCE=600 -I"." -I"libs/log/test/common" -c -o "bin.v2/libs/log/test/filt_matches_xpressive.test/gcc-11/debug/cxxstd-03-iso/threadapi-pthread/threading-multi/run/filt_matches_xpressive.o" "libs/log/test/run/filt_matches_xpressive.cpp" In file included from ./boost/xpressive/detail/core/matchers.hpp:46, from ./boost/xpressive/detail/core/linker.hpp:35, from ./boost/xpressive/detail/static/static.hpp:19, from ./boost/xpressive/detail/static/transforms/as_matcher.hpp:18, from ./boost/xpressive/detail/static/grammar.hpp:21, from ./boost/xpressive/basic_regex.hpp:28, from ./boost/xpressive/regex_compiler.hpp:30, from ./boost/xpressive/xpressive_dynamic.hpp:17, from libs/log/test/run/filt_matches_xpressive.cpp:18: ./boost/xpressive/detail/core/matcher/simple_repeat_matcher.hpp: In instantiation of ‘boost::xpressive::detail::simple_repeat_matcher<Xpr, Greedy>::simple_repeat_matcher(const Xpr&, unsigned int, unsigned int, std::size_t) [with Xpr = boost::xpressive::detail::matcher_wrapper<boost::xpressive::detail::charset_matcher<boost::xpressive::regex_traits<char, boost::xpressive::cpp_regex_traits<char> >, mpl_::bool_<false>, boost::xpressive::detail::compound_charset<boost::xpressive::regex_traits<char, boost::xpressive::cpp_regex_traits<char> > > > >; Greedy = mpl_::bool_<true>; std::size_t = long unsigned int]’: ./boost/xpressive/detail/dynamic/dynamic.hpp:216:48: required from ‘void boost::xpressive::detail::make_simple_repeat(const boost::xpressive::detail::quant_spec&, boost::xpressive::detail::sequence<BidiIter>&, const Xpr&) [with BidiIter = const char*; Xpr = boost::xpressive::detail::matcher_wrapper<boost::xpressive::detail::charset_matcher<boost::xpressive::regex_traits<char, boost::xpressive::cpp_regex_traits<char> >, mpl_::bool_<false>, boost::xpressive::detail::compound_charset<boost::xpressive::regex_traits<char, boost::xpressive::cpp_regex_traits<char> > > > >]’ ./boost/xpressive/detail/dynamic/dynamic.hpp:130:31: required from ‘void boost::xpressive::detail::dynamic_xpression<Matcher, BidiIter>::repeat_(const boost::xpressive::detail::quant_spec&, boost::xpressive::detail::sequence<BidiIter>&, mpl_::int_<1>, mpl_::false_) const [with Matcher = boost::xpressive::detail::charset_matcher<boost::xpressive::regex_traits<char, boost::xpressive::cpp_regex_traits<char> >, mpl_::bool_<false>, boost::xpressive::detail::compound_charset<boost::xpressive::regex_traits<char, boost::xpressive::cpp_regex_traits<char> > > >; BidiIter = const char*; mpl_::false_ = mpl_::bool_<false>]’ ./boost/xpressive/detail/dynamic/dynamic.hpp:96:22: required from ‘void boost::xpressive::detail::dynamic_xpression<Matcher, BidiIter>::repeat(const boost::xpressive::detail::quant_spec&, boost::xpressive::detail::sequence<BidiIter>&) const [with Matcher = boost::xpressive::detail::charset_matcher<boost::xpressive::regex_traits<char, boost::xpressive::cpp_regex_traits<char> >, mpl_::bool_<false>, boost::xpressive::detail::compound_charset<boost::xpressive::regex_traits<char, boost::xpressive::cpp_regex_traits<char> > > >; BidiIter = const char*]’ ./boost/xpressive/detail/dynamic/dynamic.hpp:94:18: required from here ./boost/xpressive/detail/core/matcher/simple_repeat_matcher.hpp:81:23: internal compiler error: in value_dependent_expression_p, at cp/pt.c:26730 81 | BOOST_ASSERT(0 != width && unknown_width() != width); | ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ Please submit a full bug report, with preprocessed source if appropriate. See <file:///usr/share/doc/gcc-10/README.Bugs> for instructions. $ g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/10/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa:hsa OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 10.3.0-1ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-10/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-10 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-10-gDeRY6/gcc-10-10.3.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-10-gDeRY6/gcc-10-10.3.0/debian/tmp-gcn/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-mutex Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 10.3.0 (Ubuntu 10.3.0-1ubuntu1) I'm attaching the preprocessed output of the test. For reference, this happens with Boost 1.77.0, as well as the current develop branch (boost superproject revision 091e69b53b55274ff81629a8e3f64ca782ca7722).
I forgot to mention that the same code compiles successfully with gcc 9.4.0. And here is the output from gcc 11.1.0: In file included from ./boost/assert.hpp:58, from ./boost/xpressive/detail/core/matcher/simple_repeat_matcher.hpp:16, from ./boost/xpressive/detail/core/matchers.hpp:46, from ./boost/xpressive/detail/core/linker.hpp:35, from ./boost/xpressive/detail/static/static.hpp:19, from ./boost/xpressive/detail/static/transforms/as_matcher.hpp:18, from ./boost/xpressive/detail/static/grammar.hpp:21, from ./boost/xpressive/basic_regex.hpp:28, from ./boost/xpressive/regex_compiler.hpp:30, from ./boost/xpressive/xpressive_dynamic.hpp:17, from libs/log/test/run/filt_matches_xpressive.cpp:18: ./boost/xpressive/detail/core/matcher/simple_repeat_matcher.hpp: In instantiation of ‘boost::xpressive::detail::simple_repeat_matcher<Xpr, Greedy>::simple_repeat_matcher(const Xpr&, unsigned int, unsigned int, std::size_t) [with Xpr = boost::xpressive::detail::matcher_wrapper<boost::xpressive::detail::charset_matcher<boost::xpressive::regex_traits<char, boost::xpressive::cpp_regex_traits<char> >, mpl_::bool_<false>, boost::xpressive::detail::compound_charset<boost::xpressive::regex_traits<char, boost::xpressive::cpp_regex_traits<char> > > > >; Greedy = mpl_::bool_<true>; std::size_t = long unsigned int]’: ./boost/xpressive/detail/dynamic/dynamic.hpp:216:48: required from ‘void boost::xpressive::detail::make_simple_repeat(const boost::xpressive::detail::quant_spec&, boost::xpressive::detail::sequence<BidiIter>&, const Xpr&) [with BidiIter = const char*; Xpr = boost::xpressive::detail::matcher_wrapper<boost::xpressive::detail::charset_matcher<boost::xpressive::regex_traits<char, boost::xpressive::cpp_regex_traits<char> >, mpl_::bool_<false>, boost::xpressive::detail::compound_charset<boost::xpressive::regex_traits<char, boost::xpressive::cpp_regex_traits<char> > > > >]’ ./boost/xpressive/detail/dynamic/dynamic.hpp:130:31: required from ‘void boost::xpressive::detail::dynamic_xpression<Matcher, BidiIter>::repeat_(const boost::xpressive::detail::quant_spec&, boost::xpressive::detail::sequence<BidiIter>&, mpl_::int_<1>, mpl_::false_) const [with Matcher = boost::xpressive::detail::charset_matcher<boost::xpressive::regex_traits<char, boost::xpressive::cpp_regex_traits<char> >, mpl_::bool_<false>, boost::xpressive::detail::compound_charset<boost::xpressive::regex_traits<char, boost::xpressive::cpp_regex_traits<char> > > >; BidiIter = const char*; mpl_::false_ = mpl_::bool_<false>]’ ./boost/xpressive/detail/dynamic/dynamic.hpp:96:22: required from ‘void boost::xpressive::detail::dynamic_xpression<Matcher, BidiIter>::repeat(const boost::xpressive::detail::quant_spec&, boost::xpressive::detail::sequence<BidiIter>&) const [with Matcher = boost::xpressive::detail::charset_matcher<boost::xpressive::regex_traits<char, boost::xpressive::cpp_regex_traits<char> >, mpl_::bool_<false>, boost::xpressive::detail::compound_charset<boost::xpressive::regex_traits<char, boost::xpressive::cpp_regex_traits<char> > > >; BidiIter = const char*]’ ./boost/xpressive/detail/dynamic/dynamic.hpp:94:18: required from here ./boost/xpressive/detail/core/matcher/simple_repeat_matcher.hpp:81:37: internal compiler error: in value_dependent_expression_p, at cp/pt.c:26978 81 | BOOST_ASSERT(0 != width && unknown_width() != width); | ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ./boost/xpressive/detail/core/matcher/simple_repeat_matcher.hpp:81:13: note: in expansion of macro ‘BOOST_ASSERT’ 81 | BOOST_ASSERT(0 != width && unknown_width() != width); | ^~~~~~~~~~~~ 0xe306b3 internal_error(char const*, ...) ???:0 0xe27039 fancy_abort(char const*, int, char const*) ???:0 0xf5208e value_dependent_expression_p(tree_node*) ???:0 0xf520a9 value_dependent_expression_p(tree_node*) ???:0 0x10ed97e tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ???:0 0x10eddd9 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ???:0 0x10ee17a tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ???:0 0x1178f37 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ???:0 0x117910c tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ???:0 0x1179047 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ???:0 0x1178f95 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ???:0 0x1179047 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ???:0 0x1178f95 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ???:0 0x122150a instantiate_decl(tree_node*, bool, bool) ???:0 0xfa3850 instantiate_pending_templates(int) ???:0 0xf9f8f3 c_parse_final_cleanups() ???:0 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <file:///usr/share/doc/gcc-11/README.Bugs> for instructions. "g++-11" -ftemplate-depth-1024 -std=c++03 -fPIC -m64 -pthread -O0 -fno-inline -Wall -g -fno-strict-aliasing -DBOOST_ALL_NO_LIB=1 -DBOOST_ATOMIC_DYN_LINK=1 -DBOOST_CHRONO_DYN_LINK=1 -DBOOST_FILESYSTEM_DYN_LINK=1 -DBOOST_LOG_DYN_LINK=1 -DBOOST_LOG_SETUP_DYN_LINK=1 -DBOOST_LOG_USE_AVX2 -DBOOST_LOG_USE_SSSE3 -DBOOST_TEST_DYN_LINK=1 -DBOOST_TEST_NO_AUTO_LINK=1 -DBOOST_THREAD_BUILD_DLL=1 -DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_DLL=1 -D_XOPEN_SOURCE=600 -I"." -I"libs/log/test/common" -c -o "bin.v2/libs/log/test/filt_matches_xpressive.test/gcc-11/debug/cxxstd-03-iso/threadapi-pthread/threading-multi/run/filt_matches_xpressive.o" "libs/log/test/run/filt_matches_xpressive.cpp"
The code compiles if -std=c++03 is replaced with e.g. -std=c++11.
Dup. *** This bug has been marked as a duplicate of bug 100161 ***
(In reply to Martin Liška from comment #3) > Dup. > > *** This bug has been marked as a duplicate of bug 100161 *** This bug isn't about a warning but about an ICE. Are you positive this is a duplicate?
Yes, please. It was fixed with the commit that belongs to the PR. Moreover, there's one more boost ICE report that was also marked as duplicate of the mentioned PR.
Ok, thanks for confirming.