tags 416819 + fixed-upstream retitle 416819 [fixed in SVN] internal compiler error: in tsubst, at cp/pt.c:7226 thanks
* Martin Michlmayr <[EMAIL PROTECTED]> [2007-03-30 19:59]: > > Please too note that it is 100% a Debian/gcc bug, hence I've just > > downloaded gcc version 4.1.2, and it works like a charm. > OK, I can confirm that this doesn't show up with gcc 4.1 from current > SVN, but shows up with SVN 20061114-r118779 (just before the current > gcc-4.1 release). So this bug is fixed in SVN. For the record, the ICE is tsubst, at cp/pt.c:7226. A reduced testcase is below. -- Martin Michlmayr http://www.cyrius.com/
extern "C" { typedef unsigned int size_t; typedef struct __sigset_t; }; extern "C" { typedef int int16_t __attribute__ ((__mode__ (__HI__))); typedef int int32_t __attribute__ ((__mode__ (__SI__))); } typedef unsigned char uint8_t; typedef unsigned short int uint16_t; template < class FIRST, class SECOND > class Ident { }; template < class TYPE > class Less { }; template < class NUM, int DIM, class TOL > class Pixel { }; typedef Pixel < uint8_t, 1, int32_t > PixelY; template < class ACCUM_NUM, class PIXEL_NUM, int DIM, class PIXEL = Pixel < PIXEL_NUM, DIM, ACCUM_NUM > >class ReferencePixel { }; typedef ReferencePixel < uint16_t, uint8_t, 1, PixelY > ReferencePixelY; template < class REFERENCEPIXEL, class PIXELINDEX, class FRAMESIZE > class ReferenceFrame { }; typedef ReferenceFrame < ReferencePixelY, int16_t, int32_t > ReferenceFrameY; template < class INDEX, class SIZE > class Region2D { public:class Extent { }; }; template < class TYPE, size_t SIZES > class Allocator { }; template < class KEY, class VALUE, class KEYFN, class PRED > class SkipList { private:struct Node { }; enum { HEADERCHUNK = 10 }; public:typedef Allocator < Node, HEADERCHUNK > Allocator; static Allocator sm_oNodeAllocator; }; template < class TYPE, class PRED = Less < TYPE > >class Set { public:typedef SkipList < TYPE, TYPE, Ident < TYPE, TYPE >, PRED > Imp; public:typedef typename Imp::Allocator Allocator; }; template < class INDEX, class SIZE > class SetRegion2D:public Region2D < INDEX, SIZE > { private:typedef Region2D < INDEX, SIZE > BaseClass; public:typedef typename BaseClass::Extent Extent; typedef Set < Extent > Extents; public:typedef typename Extents::Allocator Allocator; class FloodFillControl; }; template < class INDEX, class SIZE > class SetRegion2D < INDEX, SIZE >::FloodFillControl { private:typedef SetRegion2D < INDEX, SIZE > Region_t; public:Region_t m_oToDo; typedef typename Region_t::Allocator Allocator; }; template < class PIXEL_NUM, int DIM, class PIXEL_TOL, class PIXELINDEX, class FRAMESIZE, PIXELINDEX PGW, PIXELINDEX PGH, class SORTERBITMASK, class PIXEL = Pixel < PIXEL_NUM, DIM, PIXEL_TOL >, class REFERENCEPIXEL = ReferencePixel < PIXEL_TOL, PIXEL_NUM, DIM, PIXEL >, class REFERENCEFRAME = ReferenceFrame < REFERENCEPIXEL, PIXELINDEX, FRAMESIZE > >class MotionSearcher { typedef SetRegion2D < PIXELINDEX, FRAMESIZE > Region_t; class MatchThrottleFloodFillControl:public Region_t::FloodFillControl { private:typedef typename Region_t::FloodFillControl BaseClass; public: MatchThrottleFloodFillControl (typename BaseClass:: Allocator & a_rAllocator = Region_t::Extents::Imp:: sm_oNodeAllocator); }; MatchThrottleFloodFillControl m_oMatchThrottleFloodFillControl; }; class MotionSearcherY:public MotionSearcher < uint8_t, 1, int32_t, int16_t, int32_t, 4, 2, uint16_t, PixelY, ReferencePixelY, ReferenceFrameY > { };