------- Comment #2 from rguenth at gcc dot gnu dot org 2007-10-02 15:09 ------- Reduced testcase:
typedef unsigned int UT_uint32; typedef UT_uint32 PT_DocPosition; typedef UT_uint32 PT_BlockOffset; typedef enum _PTStruxType { PTX_Block } PTStruxType; typedef UT_uint32 PL_ListenerId; typedef const void * PL_StruxFmtHandle; class PX_ChangeRecord; class pf_Frag { public: typedef enum _PFType { PFT_Object } PFType; inline PFType getType(void) const { } inline pf_Frag * getNext(void) const { } PT_DocPosition getPos(void) const { } }; class pf_Fragments { public: pf_Frag * getFirst() const; }; class pt_PieceTable { bool getStruxOfTypeFromPosition(PL_ListenerId listenerId, PT_DocPosition docPos, PTStruxType pts, PL_StruxFmtHandle * psfh) const; bool _tellAndMaybeAddListener(PL_ListenerId listenerId, bool bAdd); pf_Fragments m_fragments; }; class pf_Frag_Object : public pf_Frag { public: virtual bool createSpecialChangeRecord(PX_ChangeRecord ** ppcr, PT_DocPosition dpos, PT_BlockOffset blockOffset) const; }; bool pt_PieceTable::_tellAndMaybeAddListener(PL_ListenerId listenerId, bool bAdd) { PL_StruxFmtHandle sfh = 0; PT_DocPosition sum = 0; UT_uint32 blockOffset = 0; for (pf_Frag * pf = m_fragments.getFirst(); (pf); pf=pf->getNext()) { pf_Frag_Object * pfo = static_cast<pf_Frag_Object *> (pf); PX_ChangeRecord * pcr = __null; bool bStatus1 = false; if(sfh != __null) { bStatus1 = pfo->createSpecialChangeRecord(&pcr,sum,blockOffset); if (!(bStatus1)) return (false); } else { PT_DocPosition pos = pf->getPos(); getStruxOfTypeFromPosition(listenerId,pos,PTX_Block,&sfh); bStatus1 = pfo->createSpecialChangeRecord(&pcr,pos,blockOffset); if (!(bStatus1)) return (false); } if (!(bStatus1)) return (false); } } ICEs in verify_stmts on x86_64: /suse/rguenther/export/pt_PT_Listener.5.ii: In member function 'bool pt_PieceTable::_tellAndMaybeAddListener(PL_ListenerId, bool)': /suse/rguenther/export/pt_PT_Listener.5.ii:29: error: invalid conditional operand !bStatus1_24; /suse/rguenther/export/pt_PT_Listener.5.ii:29: internal compiler error: verify_stmts failed Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 GCC target triplet|ia64-*-* | Last reconfirmed|0000-00-00 00:00:00 |2007-10-02 15:09:13 date| | Summary|[4.3 Regression] ICE |[4.3 Regression] ICE in |compiling abiword |verify_stmts compiling | |abiword Target Milestone|--- |4.3.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33627