public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/56268] New: [4.7/4.8 Regression] C++11 ICE with boost multi-precision and boost variant during assignment
@ 2013-02-09 18:59 koraq at xs4all dot nl
  2013-02-09 19:00 ` [Bug c++/56268] " koraq at xs4all dot nl
                   ` (9 more replies)
  0 siblings, 10 replies; 11+ messages in thread
From: koraq at xs4all dot nl @ 2013-02-09 18:59 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56268

             Bug #: 56268
           Summary: [4.7/4.8 Regression] C++11 ICE with boost
                    multi-precision and boost variant during assignment
    Classification: Unclassified
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: koraq@xs4all.nl


Created attachment 29402
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29402
Sample code to reproduce the problem

This issue is quite similar to bug 55842.

Compiling the attached sample file leads to an internal compiler error.
The problem only occurs with GCC-4.7 from Debian Unstable 4.7.2-5 and the
upcoming 4.8 from Debian Experimental 4.8-20130127-1. Tested on an amd64
system. (GCC 4.6 works, properly.)

I'm using a checkout of the latest boost release tree.

The command to reproduce the issue is:
gcc-4.8 -std=c++11 -c -I/src/boost/release test.cpp


In file included from /src/boost/release/boost/config.hpp:57:0,
                 from /src/boost/release/boost/variant/detail/config.hpp:16,
                 from /src/boost/release/boost/variant/variant.hpp:23,
                 from /src/boost/release/boost/variant.hpp:17,
                 from test.cpp:2:
/src/boost/release/boost/type_traits/has_nothrow_copy.hpp: In instantiation of
'const bool
boost::detail::has_nothrow_copy_imp<boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,
0u> > >::value':
/src/boost/release/boost/type_traits/has_nothrow_copy.hpp:32:1:   required from
'struct
boost::has_nothrow_copy<boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,
0u> > >'
/src/boost/release/boost/variant/variant.hpp:1908:17:   required from 'void
boost::variant<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
T15, T16, T17, T18, T19>::assigner::internal_visit(const RhsT&, int) [with RhsT
=
boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,
0u> >; T0_ =
boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,
0u> >; T1 = boost::detail::variant::void_; T2 = boost::detail::variant::void_;
T3 = boost::detail::variant::void_; T4 = boost::detail::variant::void_; T5 =
boost::detail::variant::void_; T6 = boost::detail::variant::void_; T7 =
boost::detail::variant::void_; T8 = boost::detail::variant::void_; T9 =
boost::detail::variant::void_; T10 = boost::detail::variant::void_; T11 =
boost::detail::variant::void_; T12 = boost::detail::variant::void_; T13 =
boost::detail::variant::void_; T14 = boost::detail::variant::void_; T15 =
boost::detail::variant::void_; T16 = boost::detail::variant::void_; T17 =
boost::detail::variant::void_; T18 = boost::detail::variant::void_; T19 =
boost::detail::variant::void_]'
/src/boost/release/boost/variant/detail/visitation_impl.hpp:130:9:   required
from 'typename Visitor::result_type
boost::detail::variant::visitation_impl_invoke_impl(int, Visitor&, VoidPtrCV,
T*, mpl_::true_) [with Visitor =
boost::variant<boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,
0u> > >::assigner; VoidPtrCV = const void*; T =
boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,
0u> >; typename Visitor::result_type = void; mpl_::true_ = mpl_::bool_<true>]'
/src/boost/release/boost/variant/detail/visitation_impl.hpp:173:9:   required
from 'typename Visitor::result_type
boost::detail::variant::visitation_impl_invoke(int, Visitor&, VoidPtrCV, T*,
NoBackupFlag, int) [with Visitor =
boost::variant<boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,
0u> > >::assigner; VoidPtrCV = const void*; T =
boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,
0u> >; NoBackupFlag =
boost::variant<boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,
0u> > >::has_fallback_type_; typename Visitor::result_type = void]'
/src/boost/release/boost/variant/detail/visitation_impl.hpp:256:5:   required
from 'typename Visitor::result_type
boost::detail::variant::visitation_impl(int, int, Visitor&, VoidPtrCV,
mpl_::false_, NoBackupFlag, Which*, step0*) [with Which = mpl_::int_<0>; step0
=
boost::detail::variant::visitation_impl_step<boost::mpl::l_iter<boost::mpl::l_item<mpl_::long_<1l>,
boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,
0u> >, boost::mpl::l_end> >, boost::mpl::l_iter<boost::mpl::l_end> >; Visitor =
boost::variant<boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,
0u> > >::assigner; VoidPtrCV = const void*; NoBackupFlag =
boost::variant<boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,
0u> > >::has_fallback_type_; typename Visitor::result_type = void; mpl_::false_
= mpl_::bool_<false>]'
/src/boost/release/boost/variant/variant.hpp:2326:13:   required from 'static
typename Visitor::result_type boost::variant<T0, T1, T2, T3, T4, T5, T6, T7,
T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18,
T19>::internal_apply_visitor_impl(int, int, Visitor&, VoidPtrCV) [with Visitor
=
boost::variant<boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,
0u> > >::assigner; VoidPtrCV = const void*; T0_ =
boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,
0u> >; T1 = boost::detail::variant::void_; T2 = boost::detail::variant::void_;
T3 = boost::detail::variant::void_; T4 = boost::detail::variant::void_; T5 =
boost::detail::variant::void_; T6 = boost::detail::variant::void_; T7 =
boost::detail::variant::void_; T8 = boost::detail::variant::void_; T9 =
boost::detail::variant::void_; T10 = boost::detail::variant::void_; T11 =
boost::detail::variant::void_; T12 = boost::detail::variant::void_; T13 =
boost::detail::variant::void_; T14 = boost::detail::variant::void_; T15 =
boost::detail::variant::void_; T16 = boost::detail::variant::void_; T17 =
boost::detail::variant::void_; T18 = boost::detail::variant::void_; T19 =
boost::detail::variant::void_; typename Visitor::result_type = void]'
/src/boost/release/boost/variant/variant.hpp:2348:13:   required from 'typename
Visitor::result_type boost::variant<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9,
T10, T11, T12, T13, T14, T15, T16, T17, T18,
T19>::internal_apply_visitor(Visitor&) const [with Visitor =
boost::variant<boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,
0u> > >::assigner; T0_ =
boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,
0u> >; T1 = boost::detail::variant::void_; T2 = boost::detail::variant::void_;
T3 = boost::detail::variant::void_; T4 = boost::detail::variant::void_; T5 =
boost::detail::variant::void_; T6 = boost::detail::variant::void_; T7 =
boost::detail::variant::void_; T8 = boost::detail::variant::void_; T9 =
boost::detail::variant::void_; T10 = boost::detail::variant::void_; T11 =
boost::detail::variant::void_; T12 = boost::detail::variant::void_; T13 =
boost::detail::variant::void_; T14 = boost::detail::variant::void_; T15 =
boost::detail::variant::void_; T16 = boost::detail::variant::void_; T17 =
boost::detail::variant::void_; T18 = boost::detail::variant::void_; T19 =
boost::detail::variant::void_; typename Visitor::result_type = void]'
/src/boost/release/boost/variant/variant.hpp:2091:13:   required from 'void
boost::variant<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
T15, T16, T17, T18, T19>::variant_assign(const boost::variant<T0, T1, T2, T3,
T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>&)
[with T0_ =
boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,
0u> >; T1 = boost::detail::variant::void_; T2 = boost::detail::variant::void_;
T3 = boost::detail::variant::void_; T4 = boost::detail::variant::void_; T5 =
boost::detail::variant::void_; T6 = boost::detail::variant::void_; T7 =
boost::detail::variant::void_; T8 = boost::detail::variant::void_; T9 =
boost::detail::variant::void_; T10 = boost::detail::variant::void_; T11 =
boost::detail::variant::void_; T12 = boost::detail::variant::void_; T13 =
boost::detail::variant::void_; T14 = boost::detail::variant::void_; T15 =
boost::detail::variant::void_; T16 = boost::detail::variant::void_; T17 =
boost::detail::variant::void_; T18 = boost::detail::variant::void_; T19 =
boost::detail::variant::void_]'
/src/boost/release/boost/variant/variant.hpp:2175:27:   required from
'boost::variant<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
T14, T15, T16, T17, T18, T19>& boost::variant<T0, T1, T2, T3, T4, T5, T6, T7,
T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>::operator=(const
boost::variant<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
T15, T16, T17, T18, T19>&) [with T0_ =
boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,
0u> >; T1 = boost::detail::variant::void_; T2 = boost::detail::variant::void_;
T3 = boost::detail::variant::void_; T4 = boost::detail::variant::void_; T5 =
boost::detail::variant::void_; T6 = boost::detail::variant::void_; T7 =
boost::detail::variant::void_; T8 = boost::detail::variant::void_; T9 =
boost::detail::variant::void_; T10 = boost::detail::variant::void_; T11 =
boost::detail::variant::void_; T12 = boost::detail::variant::void_; T13 =
boost::detail::variant::void_; T14 = boost::detail::variant::void_; T15 =
boost::detail::variant::void_; T16 = boost::detail::variant::void_; T17 =
boost::detail::variant::void_; T18 = boost::detail::variant::void_; T19 =
boost::detail::variant::void_]'
test.cpp:16:4:   required from here
/src/boost/release/boost/type_traits/intrinsics.hpp:210:83: internal compiler
error: in nothrow_spec_p, at cp/except.c:1263
 #   define BOOST_HAS_NOTHROW_COPY(T) ((__has_nothrow_copy(T)
BOOST_INTEL_TT_OPTS) && !is_volatile<T>::value && !is_reference<T>::value)
                                                                               
   ^
/src/boost/release/boost/type_traits/has_nothrow_copy.hpp:24:40: note: in
expansion of macro 'BOOST_HAS_NOTHROW_COPY'
    BOOST_STATIC_CONSTANT(bool, value = BOOST_HAS_NOTHROW_COPY(T));
                                        ^
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.8/README.Bugs> for instructions.
Preprocessed source stored into /tmp/ccJawS1z.out file, please attach this to
your bugreport.


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2013-02-21 18:56 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-02-09 18:59 [Bug c++/56268] New: [4.7/4.8 Regression] C++11 ICE with boost multi-precision and boost variant during assignment koraq at xs4all dot nl
2013-02-09 19:00 ` [Bug c++/56268] " koraq at xs4all dot nl
2013-02-10 12:19 ` rguenth at gcc dot gnu.org
2013-02-10 12:42 ` markus at trippelsdorf dot de
2013-02-11  8:37 ` jakub at gcc dot gnu.org
2013-02-11  8:40 ` jakub at gcc dot gnu.org
2013-02-11 15:30 ` jason at gcc dot gnu.org
2013-02-11 15:48 ` jason at gcc dot gnu.org
2013-02-11 16:21 ` jason at gcc dot gnu.org
2013-02-11 17:29 ` jason at gcc dot gnu.org
2013-02-21 18:56 ` koraq at xs4all dot nl

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).