The following code snippet causes an ICE on mainline when compiled with "-fmudflap -O2":
=========================================================== extern "C" { extern void __mf_unregister (void*, __SIZE_TYPE__, int) throw(); } struct A { int i; A(int& j) : i(j) { } }; struct B { B(const B&); }; struct C { B b; int i; void foo(int, B) {} ~C() { foo(i, b); } }; struct D { C* p; ~D() { delete p; } }; struct E { B b; int i; void bar(A); void baz(D) { bar(A(i)); } }; int f0(char*&); inline bool f1(char* p, char* q, int) { return p ? p : q; } inline bool f2(char* p) { return f1(p, 0, f0(p)); } void f2(E e) { if (f2(0)) e.baz(D()); } =========================================================== -- Summary: [4.2 regression] ICE with -fmudflap Product: gcc Version: 4.2.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: reichelt at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26771