http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55500
Bug #: 55500 Summary: [devirt] trunk fails inline-devirt test #7 Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end AssignedTo: unassig...@gcc.gnu.org ReportedBy: m...@use.net Created attachment 28802 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28802 test case that fails in trunk but passed with Maxim's devirt patches. added a loop to induce 'hotness' of the path versus the original test case. inline-devirt-7.C, which passed using Maxim's patches from 11/2011, do not pass on current trunk. Current trunk is missing the ipa-iterations patch, which may be required for this test case to pass. This test embodies a simple factory pattern and interface segregation, two C++ best practices. (The weird loop in main() is to induce "hot" inlining as mentioned in previous bugs.) 00000000004006d0 <main>: 4006d0: 55 push rbp 4006d1: bd 03 00 00 00 mov ebp,0x3 4006d6: 53 push rbx 4006d7: 48 83 ec 08 sub rsp,0x8 4006db: bf 10 00 00 00 mov edi,0x10 4006e0: e8 db ff ff ff call 4006c0 <_Znwm@plt> 4006e5: 48 c7 00 50 0c 40 00 mov QWORD PTR [rax],0x400c50 4006ec: 48 c7 40 08 88 0c 40 mov QWORD PTR [rax+0x8],0x400c88 4006f3: 00 4006f4: 48 89 c7 mov rdi,rax 4006f7: 48 89 c3 mov rbx,rax 4006fa: e8 61 02 00 00 call 400960 <_ZN11LinuxSocket4openEv>