[Bug middle-end/50496] [4.7 regression] ICE in redirect_jump, at jump.c:1497
markus at trippelsdorf dot de
gcc-bugzilla@gcc.gnu.org
Sat Sep 24 18:30:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50496
--- Comment #4 from Markus Trippelsdorf <markus at trippelsdorf dot de> 2011-09-24 18:23:15 UTC ---
I've found a new testcase that results in the same ICE:
% < test.cpp
class GCAlloc {
};
class BaseAlloc {
};
class String;
class Base {
public:
virtual void destroy( String *str ) const =0;
};
class String: public GCAlloc {
const Base *m_class;
public:
enum constants {
};
String( const char *data );
~String() {
m_class->destroy( this );
}
void copy( const String &other );
String & operator=( const char *other ) {
copy( String( other ) );
}
};
class ListElement: public BaseAlloc {
};
class List: public BaseAlloc {
ListElement *m_head;
void (*m_deletor)( void *);
public:
List(): m_deletor(0) {
}
const void *back() const {
}
bool empty() const {
return m_head == 0;
}
void popBack();
};
class FalconData: public BaseAlloc {
public:
virtual ~FalconData() {
}
};
class Stream: public FalconData {
};
class SrcLexer: public BaseAlloc {
List m_streams;
String m_whiteLead;
void reset();
};
void SrcLexer::reset()
{
m_whiteLead = "";
while( ! m_streams.empty() ) {
Stream *s = (Stream *) m_streams.back();
m_streams.popBack();
if ( !m_streams.empty() ) delete s;
}
}
% g++ -O2 test.cpp
test.ii: In member function ‘void SrcLexer::reset()’:
test.ii:59:1: internal compiler error: in redirect_jump, at jump.c:1497
More information about the Gcc-bugs
mailing list