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>

Reply via email to