http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59543
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #31527|0 |1 is obsolete| | --- Comment #5 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- Created attachment 31851 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=31851&action=edit smaller testcase Here's a smaller testcase, that just needs two input files (but uniset.ii still needs its gcda file): markus@x4 lto_pgo_testcase % cat unorm.ii namespace icu_50 { class UnicodeString { public: UnicodeString(); void extractBetween(int, int, unsigned short *, int = 0) const; void doExtract(int, unsigned short *, int) const; void pinIndex(int &) const; }; inline void UnicodeString::extractBetween(int p1, int p2, unsigned short *p3, int p4) const { pinIndex(p1); doExtract(p2 - p1, p3, p4); } UnicodeString::UnicodeString() { extractBetween(0, 0, 0); } UnicodeString a; } markus@x4 lto_pgo_testcase % g++ -g -fPIC -flto -fno-exceptions -O2 -std=c++11 -c unorm.ii markus@x4 lto_pgo_testcase % g++ -w -g -fprofile-use -fPIC -flto -fno-exceptions -O2 -std=c++11 -c uniset.ii markus@x4 lto_pgo_testcase % g++ -flto -O2 uniset.o unorm.o In member function ‘extractBetween’: lto1: fatal error: Cgraph edge statement index out of range 28 < 46 compilation terminated.