http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49615
Summary: internal compiler error: verify_stmts failed / LHS in noreturn call with pointer-to-never-returning-member Product: gcc Version: 4.6.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: har...@gigawatt.nl I came across this while reducing another testcase (which I'll report separately): $ cat bug.ii template <class T> static inline bool Dispatch (T* obj, bool (T::*func) ()) { return (obj->*func) (); } class C { bool f (int); bool g (); }; bool C::f (int n) { bool b; switch (n) { case 0: b = Dispatch (this, &C::g); case 1: b = Dispatch (this, &C::g); } } bool C::g () { for (;;) { } } $ gcc -O bug.ii bug.ii: In member function ‘bool C::f(int)’: bug.ii:11:6: error: LHS in noreturn call b_48 = C::g (D.2160_46); bug.ii:11:6: internal compiler error: verify_stmts failed Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. $ gcc -v: Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/4.6.1/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /var/tmp/pkgbuild/sys-devel/gcc-4.6.1/work/gcc-4.6.1/configure --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --prefix=/usr --libdir='/usr/lib64' --sysconfdir=/etc --enable-languages=c,c++ --enable-checking --enable-build-with-cxx Thread model: posix gcc version 4.6.1 (GCC)