https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62224
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #11 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- Here's a small testcase: markus@x4 tmp % cat cppcodemodelinspectordialog.ii namespace CppTools { class A { public: virtual void headerPaths () = 0; }; namespace Internal { class CppModelManager : CppTools::A { void headerPaths () { ensureUpdated (); } void ensureUpdated (); }; } } CppTools::A *a; void fn1 () { a->headerPaths (); } (before r214208) markus@x4 tmp % g++ -Wl,--no-undefined -shared -fPIC -O2 cppcodemodelinspectordialog.ii markus@x4 tmp % (after r214208) markus@x4 tmp % g++ -Wl,--no-undefined -shared -fPIC -O2 cppcodemodelinspectordialog.ii /tmp/ccMZQE0g.o:cppcodemodelinspectordialog.ii:function fn1(): error: undefined reference to 'CppTools::Internal::CppModelManager::ensureUpdated()' /tmp/ccMZQE0g.o:cppcodemodelinspectordialog.ii:function CppTools::Internal::CppModelManager::headerPaths(): error: undefined reference to 'CppTools::Internal::CppModelManager::ensureUpdated()' collect2: error: ld returned 1 exit status (one can use -fno-devirtualize-speculatively as a workaround) markus@x4 tmp % g++ -Wl,--no-undefined -fno-devirtualize-speculatively -shared -fPIC -O2 cppcodemodelinspectordialog.ii markus@x4 tmp %