https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61811
Bug ID: 61811 Summary: [4.10 Regression] Firefox LTO build error due to undefined symbols Product: gcc Version: 4.10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: trippels at gcc dot gnu.org CC: hubicka at ucw dot cz, jason at gcc dot gnu.org Firefox doesn't build with -flto on trunk. It fails due to undefined symbols during linking of libxul. This only happens if -flto, -fno-rtti and -fuse-all-virtuals are all enabled during the build. Reduced testcase: markus@x4 signaling_ecc % cat CC_SIPCCLine.ii template <class T> class nsRefPtr { T *mRawPtr; public: typedef T element_type; ~nsRefPtr () { mRawPtr->Release (); } void get (); }; namespace CSF { class CC_Call { public: void Release () { delete this; } virtual ~CC_Call (); }; class CC_SIPCCCallMediaData { public: void Release (); }; class A : public CC_Call { public: static nsRefPtr<CSF::A> wrap (int); nsRefPtr<CSF::CC_SIPCCCallMediaData> pMediaData; }; } using namespace CSF; void fn1 () { A::wrap (0).get (); } markus@x4 signaling_ecc % c++filt _ZN8nsRefPtrIN3CSF21CC_SIPCCCallMediaDataEED1Ev nsRefPtr<CSF::CC_SIPCCCallMediaData>::~nsRefPtr() markus@x4 signaling_ecc % c++ -o CC_SIPCCLine.o -c -fno-rtti -flto -O2 CC_SIPCCLine.ii markus@x4 signaling_ecc % nm CC_SIPCCLine.o | grep _ZN8nsRefPtrIN3CSF21CC_SIPCCCallMediaDataEED1Ev U _ZN8nsRefPtrIN3CSF21CC_SIPCCCallMediaDataEED1Ev markus@x4 signaling_ecc % c++ -o CC_SIPCCLine.o -c -flto -O2 CC_SIPCCLine.ii markus@x4 signaling_ecc % nm CC_SIPCCLine.o | grep _ZN8nsRefPtrIN3CSF21CC_SIPCCCallMediaDataEED1Ev markus@x4 signaling_ecc % c++ -o CC_SIPCCLine.o -c -O2 CC_SIPCCLine.ii markus@x4 signaling_ecc % nm CC_SIPCCLine.o | grep _ZN8nsRefPtrIN3CSF21CC_SIPCCCallMediaDataEED1Ev markus@x4 signaling_ecc % c++ -o CC_SIPCCLine.o -c -fno-rtti -O2 CC_SIPCCLine.ii markus@x4 signaling_ecc % nm CC_SIPCCLine.o | grep _ZN8nsRefPtrIN3CSF21CC_SIPCCCallMediaDataEED1Ev markus@x4 signaling_ecc % c++ -o CC_SIPCCLine.o -c -fno-use-all-virtuals -fno-rtti -flto -O2 CC_SIPCCLine.ii markus@x4 signaling_ecc % nm CC_SIPCCLine.o | grep _ZN8nsRefPtrIN3CSF21CC_SIPCCCallMediaDataEED1Ev markus@x4 signaling_ecc %