Bug#416819: gcc-4.1: internal compiler error
tags 416819 + fixed-upstream
retitle 416819 [fixed in SVN] internal compiler error: in tsubst, at cp/pt.c:7226
thanks
* Martin Michlmayr <tbm@cyrius.com> [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 >
{
};
Reply to: