[Bug middle-end/46823] [4.6 Regression] ICE: edge points to wrong declaration

hubicka at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sat Jan 8 04:17:00 GMT 2011


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
jh@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 ;)



More information about the Gcc-bugs mailing list