[Bug c++/53011] ice in verify_loop_structure: bad sizes
markus at trippelsdorf dot de
gcc-bugzilla@gcc.gnu.org
Mon Apr 16 19:36:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53011
Markus Trippelsdorf <markus at trippelsdorf dot de> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |markus at trippelsdorf dot
| |de
--- Comment #1 from Markus Trippelsdorf <markus at trippelsdorf dot de> 2012-04-16 19:35:42 UTC ---
Somewhat reduced:
% cat test.ii
extern "C" class WvFastString;
typedef WvFastString& WvStringParm;
struct WvFastString {
~WvFastString();
operator char* () {}
};
class WvString : WvFastString {};
class WvAddr {};
class WvIPAddr : WvAddr {};
struct WvIPNet : WvIPAddr {
bool is_default() {}
};
template<class T, bool> struct WvTraits_Helper {
static void release(T *obj) {
delete obj;
}
};
template<class From> struct WvTraits {
static void release(From *obj) {
WvTraits_Helper<From, 0>::release(obj);
}
};
struct WvLink {
void *data;
WvLink *next;
bool autofree;
WvLink(bool, int) : autofree() {}
bool get_autofree() {}
void unlink() {
delete this;
}
};
struct WvListBase {
WvLink head, *tail;
WvListBase() : head(0, 0) {}
};
template<class T> struct WvList : WvListBase {
~WvList() {
zap();
}
void zap(bool destroy = 1) {
while (head.next) unlink_after(&head, destroy);
}
void unlink_after(WvLink *after, bool destroy) {
WvLink *next = 0;
T *obj = (destroy && next->get_autofree()) ?
static_cast<T*>(next->data) : 0;
if (tail) tail = after;
next->unlink();
WvTraits<T>::release(obj);
}
};
typedef WvList<WvString>WvStringListBase;
class WvStringList : WvStringListBase {};
class WvSubProc {
WvStringList last_args, env;
};
void addroute(WvIPNet& dest, WvStringParm table) {
if (dest.is_default() || (table != "default")) WvSubProc checkProc;
}
% g++ -c -O1 test.ii
test.ii: In function ‘void addroute(WvIPNet&, WvStringParm)’:
test.ii:64:1: internal compiler error: Segmentation fault
More information about the Gcc-bugs
mailing list