http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48574
--- Comment #17 from Dodji Seketeli <dodji at gcc dot gnu.org> 2011-05-05 20:14:09 UTC --- I think the reduced test case below reflects the ICE of the original test case. It needs the -std=c++0x option. struct A { virtual int foo(); }; void baz (int); template <typename T> void bar(T x) { A &b = *x; baz (b.foo ()); } void foo() { A a; bar(&a); }