This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/33627] [4.3 Regression] ICE in verify_stmts compiling abiword



------- 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]