http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46823
--- Comment #15 from Jan Hubicka <hubicka at gcc dot gnu.org> 2011-01-08 00:35:03 UTC --- OK, both decl and e->callee->former_clone_of points to decls that are not clones. (gdb) p debug_tree (decl->decl_with_vis.assembler_name) <identifier_node 0x7ffff76e7420 _ZN4CGAL10PolynomialINS0_INS0_IN4CORE6BigIntEEEEEEC1IS4_EERKT_ bindings <(nil)> local bindings <(nil)>> $14 = void (gdb) p debug_tree (e->callee->former_clone_of->decl_with_vis.assembler_name) <identifier_node 0x7ffff76e73c8 _ZN4CGAL10PolynomialINS0_INS0_IN4CORE6BigIntEEEEEEC2IS4_EERKT_ bindings <(nil)> local bindings <(nil)>> $15 = void (gdb) [2]+ Stopped gdb --args ./cc1plus -quiet -v -iprefix /home/jh/trunk/build/gcc/../lib/gcc/x86_64-unknown-linux-gnu/4.6.0/ -isystem ./include -isystem ./include-fixed -D_GNU_SOURCE a.cc -quiet -dumpbase a.cc -mtune=generic -march=x86-64 -auxbase a -O3 -version -frounding-math -o a.s j...@gcc10:~/trunk/build/gcc$ c++filt _ZN4CGAL10PolynomialINS0_INS0_IN4CORE6BigIntEEEEEEC1IS4_EERKT_ CGAL::Polynomial<CGAL::Polynomial<CGAL::Polynomial<CORE::BigInt> > >::Polynomial<CGAL::Polynomial<CGAL::Polynomial<CORE::BigInt> > >(CGAL::Polynomial<CGAL::Polynomial<CORE::BigInt> > const&) _ZN4CGAL10PolynomialINS0_INS0_IN4CORE6BigIntEEEEEEC2IS4_EERKT_ CGAL::Polynomial<CGAL::Polynomial<CGAL::Polynomial<CORE::BigInt> > >::Polynomial<CGAL::Polynomial<CGAL::Polynomial<CORE::BigInt> > >(CGAL::Polynomial<CGAL::Polynomial<CORE::BigInt> > const&) it seems to me that only way this can happen is devirtualizing choosing one variant at IPA mode while other variant in intra-procedural mode during inlining. I guess at least one solution should be buggy? So it is really Martin's ;)