http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59176
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2014-01-17 CC| |trippels at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #4 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- A bit more reduced: markus@x4 tmp % cat test.ii template <class> class A { protected: void m_fn2(); ~A() { m_fn2(); } virtual void m_fn1(); }; class D : A<int> {}; template <class Key> void A<Key>::m_fn2() { m_fn1(); m_fn1(); m_fn1(); } #pragma interface class B { D m_cellsAlreadyProcessed; D m_cellsNotToProcess; public: virtual ~B() {} void m_fn1(); }; class C { unsigned long m_fn1(); B m_fn2(); unsigned long m_fn3(); }; unsigned long C::m_fn1() { CellHierarchy: m_fn2().m_fn1(); } unsigned long C::m_fn3() { CellHierarchy: m_fn2().m_fn1(); } markus@x4 tmp % /var/tmp/gcc_test/usr/local/bin/g++ -O3 -c test.ii test.ii:38:1: error: edge points to wrong declaration: } ^ <function_decl 0x7fbc9b7e4c00 __base_dtor .constprop type <method_type 0x7fbc9b7ca690 type <void_type 0x7fbc9b671000 void type_6 VOID align 8 symtab 0 alias set -1 canonical type 0x7fbc9b671000 pointer_to_this <pointer_type 0x7fbc9b6710a8>> QI size <integer_cst 0x7fbc9b660280 constant 8> unit size <integer_cst 0x7fbc9b6602a0 constant 1> align 8 symtab 0 alias set -1 canonical type 0x7fbc9b7ca690 method basetype <record_type 0x7fbc9b7c8bd0 B> arg-types <tree_list 0x7fbc9b7f30a0 value <pointer_type 0x7fbc9b7c8e70> chain <tree_list 0x7fbc9b65cb40 value <void_type 0x7fbc9b671000 void>>>> static autoinline decl_5 QI file test.ii line 21 col 11 align 16 context <record_type 0x7fbc9b7c8bd0 B> abstract_origin <function_decl 0x7fbc9b7b3200 B> full-name "B::~B()" pending-inline-info 0x7fbc9b7cc780> Instead of: <function_decl 0x7fbc9b7cb200 __comp_dtor type <method_type 0x7fbc9b7c8dc8 type <void_type 0x7fbc9b671000 void type_6 VOID align 8 symtab 0 alias set -1 canonical type 0x7fbc9b671000 pointer_to_this <pointer_type 0x7fbc9b6710a8>> QI size <integer_cst 0x7fbc9b660280 constant 8> unit size <integer_cst 0x7fbc9b6602a0 constant 1> align 8 symtab 0 alias set -1 canonical type 0x7fbc9b7c8dc8 method basetype <record_type 0x7fbc9b7c8bd0 B> arg-types <tree_list 0x7fbc9b7c0898 value <pointer_type 0x7fbc9b7c8e70> chain <tree_list 0x7fbc9b65cb40 value <void_type 0x7fbc9b671000 void>>> pointer_to_this <pointer_type 0x7fbc9b7ca498>> addressable used public static external weak autoinline decl_5 QI file test.ii line 21 col 11 align 16 context <record_type 0x7fbc9b7c8bd0 B> initial <error_mark 0x7fbc9b655f48> abstract_origin <function_decl 0x7fbc9b7b3200 B> full-name "B::~B()" pending-inline-info 0x7fbc9b7cc900 chain <function_decl 0x7fbc9b7cb100 __deleting_dtor >> _ZN1C5m_fn3Ev/8 (long unsigned int C::m_fn3()) @0x7fbc9b7d2000 Type: function definition analyzed Visibility: forced_by_abi externally_visible public References: __gxx_personality_v0/22 (addr) Referring: Availability: available First run: 0 Function flags: body Called by: Calls: _ZN1BD2Ev.constprop.0/35 _ZN1BD2Ev.constprop.0/39 (inlined) (1.00 per call) (can throw external) _ZN1B5m_fn1Ev/21 (1.00 per call) _ZN1C5m_fn2Ev/20 (1.00 per call) (can throw external) test.ii:38:1: internal compiler error: verify_cgraph_node failed