http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58165
Bug ID: 58165 Summary: [4.8/4.9 regression] internal compiler error: verify_flow_info Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: regression Assignee: unassigned at gcc dot gnu.org Reporter: aivchenk at gmail dot com extern "C" { float sqrtf(float); } class V { public: double length2 () const {} double length () const { return sqrtf(length2()); } V& normalize() { length(); return *this; } }; class B1 { public: virtual ~B1 (); }; class B2: public B1 { public: B2(const V& p0,const V& p1,const V& p2) : B1() {} }; class A1 { public: virtual ~A1 (); }; struct A2: public A1 { V m_v; virtual void foo (V v) { V v1 (v); B2 tA (m_v, m_v, m_v); V v2 = v1.normalize(); } }; void bar () { A2 a; } Compile: g++ -c -O3 test.C test.C: In member function ‘virtual void A2::foo(V)’: test.C:43:16: error: BB 6 is missing an EH edge virtual void foo (V v) ^ test.C:43:16: internal compiler error: verify_flow_info failed 0x8b31ce verify_flow_info() src/gcc/gcc/cfghooks.c:260 0xbceee7 execute_function_todo src/gcc/gcc/passes.c:1633 0xbce1b3 do_per_function src/gcc/gcc/passes.c:1358 0xbcefd7 execute_todo src/gcc/gcc/passes.c:1660 _________________________________________ The case came from android ndk r9: it's 4.8 is unable to compile bullet lib. After some investigation I found that it's the same as in usual 4.8-release with just android sysroot (The reason is that 'sqrtf' is defined in Bionic without throw, if you add throw() to it, as it is in glibc, the ICE will disappear again). The guilty revision is: Author: eraman <eraman@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri Jun 15 17:35:11 2012 +0000 2012-06-15 Easwaran Raman <era...@google.com> * passes.c (init_optimization_passes): Remove pass_call_cdce from its current position and insert after pass_dce. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@188675 138bc75d-0d04-0410-961f-82ee72b054a4