------- Comment #5 from janis at gcc dot gnu dot org 2005-11-05 01:00 ------- I tried out a few cross compilers for i686-pc-cygwin over the last few months. The code compiled cleanly on 20040607. Sometime between then and 20040709 it started failing with a different ICE from what it gets now. For awhile (at least from 20040921-20051127) it got only: C:/rah/Vc/CppLib/RefCntUtil.h:119: error: declaration of `RefCntUtil::ucPtr::operator T*() const' C:/rah/Vc/CppLib/RefCntUtil.h:101: error: conflicts with previous declaration `RefCntUtil::ucPtr::operator X*() const' That error went away. The current ICE and several of the other errors started sometime between 20050227-20050404. Here's a testcase for one of them: class CloneableObject { friend class CloneWalker; public: virtual void WalkClone(CloneWalker&) const = 0; }; class CloneWalker { CloneWalker(int) {} CloneWalker(void) {} }; It fails on powerpc-linux with "error: ‘CloneWalker’ has not been declared", the first error that the large testcase gets, not the one that leads to the ICE. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24605