https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106955
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |WAITING CC| |marxin at gcc dot gnu.org Last reconfirmed| |2022-09-20 Ever confirmed|0 |1 --- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> --- (In reply to Arseny Solokha from comment #1) > Created attachment 53589 [details] > Reduced preprocessed testcase > > Unfortunately a 173K file is the best I could come up with after three days > of reduction, though it fails the check w/ just -std=c++20 -O1 > -fcompare-debug -ftree-parallelize-loops=2. Can't compile this due to: g++ pr106955.c -std=c++20 -O1 -fcompare-debug -ftree-parallelize-loops=2 -c : In instantiation of ‘struct __gnu_cxx::__normal_iterator<int, int>’: :822:5: required from here :793:44: error: ‘__gnu_cxx::__normal_iterator<int, int>::__traits_type’ {aka ‘int’} is not a class, struct, or union type :794:38: error: ‘__gnu_cxx::__normal_iterator<int, int>::__traits_type’ {aka ‘int’} is not a class, struct, or union type :795:36: error: ‘__gnu_cxx::__normal_iterator<int, int>::__traits_type’ {aka ‘int’} is not a class, struct, or union type : In instantiation of ‘struct std::reverse_iterator<int>’: :1875:44: required from here :759:36: error: ‘std::reverse_iterator<int>::__traits_type’ {aka ‘int’} is not a class, struct, or union type :764:11: error: ‘int’ is not a class, struct, or union type : In substitution of ‘template<class _Iter, class _Tp> using std::__detail::__iter_traits = typename std::__detail::__iter_traits_impl::type [with _Iter = std::incrementable_traits<int>; _Tp = std::incrementable_traits<int>]’: :133:7: required by substitution of ‘template<class _Tp> using std::__detail::__iter_diff_t = typename std::__detail::__iter_traits_impl<std::incrementable_traits<_Tp>, std::incrementable_traits<_Tp> >::type::difference_type [with _Tp = int]’ :136:7: required by substitution of ‘template<class _Tp> using std::iter_difference_t = std::__detail::__iter_diff_t<typename std::remove_cvref<_Tp>::type> [with _Tp = int]’ :767:11: required from ‘struct std::reverse_iterator<int>’ :1875:44: required from here :131:7: error: invalid use of incomplete type ‘struct std::__detail::__iter_traits_impl<std::incrementable_traits<int>, std::incrementable_traits<int> >’ :123:40: note: declaration of ‘struct std::__detail::__iter_traits_impl<std::incrementable_traits<int>, std::incrementable_traits<int> >’