[Bug c++/56395] [4.7/4.8 Regression] ICE, Segmentation fault in tsubst

markus at trippelsdorf dot de gcc-bugzilla@gcc.gnu.org
Wed Feb 20 12:20:00 GMT 2013


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

Markus Trippelsdorf <markus at trippelsdorf dot de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |markus at trippelsdorf dot
                   |                            |de

--- Comment #6 from Markus Trippelsdorf <markus at trippelsdorf dot de> 2013-02-20 12:19:47 UTC ---
A little bit further reduced:

template < typename T > struct I
{
  typedef T type;
};
template < typename T > struct F
{
  typedef T type;
};
template < typename ChildType > struct H
{
  typedef ChildType ChildNodeType;
    template < typename RootNodeT > struct A
  {
    typedef RootNodeT NodeType;
    typedef typename F < NodeType >::type NonConstNodeType;
  };
  typedef A < H > ChildOnCIter;
};
template < bool > struct C;
template <> struct C <false >
{
  template < typename Sequence > struct G
  {
    typedef typename Sequence::tag type;
  };
};
template < typename Sequence > struct O:C < 0 >::G < Sequence >
{
};
template < typename > struct W;
template < typename Sequence > struct P:W < typename O <
  Sequence >::type >::template X < Sequence >
{
};
template < typename > struct L;
template < typename Sequence,
  typename T > struct Q:L < typename O < Sequence >::type >
                        ::template X < Sequence, T >
{
};
template <> struct W <int >
{
  template < typename Vector > struct X:I < Vector >
  {
  };
};
template < typename Base > struct R:Base
{
};
template < typename = int > struct V;
template <> struct V <>
{
  typedef int tag;
};
struct S:R < V <> >
{
};
template < typename HeadT, int > struct J
{
  typedef typename J < typename HeadT::ChildNodeType, 1 >::Type SubtreeT;
  typedef typename Q < SubtreeT, HeadT >::type Type;
};
template < typename HeadT > struct J <HeadT, 0 >
{
  typedef S Type;
};
template < typename > struct IterTraits
{
  template < typename OtherNodeT > struct K
  {
    typedef OtherNodeT Type;
  };
};
template < typename PrevItemT, typename NodeVecT, int > struct B
{
  typedef typename PrevItemT::IterT PrevIterT;
  typedef typename P < NodeVecT >::type _NodeT;
  typedef typename IterTraits < PrevIterT >::template K < _NodeT >::Type IterT;
    IterTraits < IterT > ITraits;
};
template < typename PrevItemT, typename NodeVecT > struct B <PrevItemT,
  NodeVecT, 0 >
{
  typedef typename PrevItemT::IterT PrevIterT;
  typedef typename P < NodeVecT >::type _NodeT;
  typedef typename IterTraits < PrevIterT >::template K < _NodeT >::Type IterT;
    IterTraits < IterT > ITraits;
};
template < typename RootChildOnIterT > struct N
{
  typedef RootChildOnIterT RootIterT;
  typedef typename RootIterT::NonConstNodeType NCRootNodeT;
  typedef typename J < NCRootNodeT, 0 >::Type InvTreeT;
  struct M
  {
    typedef RootIterT IterT;
  };
    B < M, InvTreeT, 0 > mIterList;
};
template < typename T > struct D
{
  N < typename T::ChildOnCIter > LeafCIter;
};
D < H < int > >a;



More information about the Gcc-bugs mailing list