https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85216

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|WAITING                     |RESOLVED
   Last reconfirmed|2018-04-05 00:00:00         |
         Resolution|---                         |INVALID

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
This is 100% the equivalent code.

jmp     *(%r15) # opline.199_67->handler
Does two things:
loads a pointer from %r15 and then jumps to that pointer.

In PowerPC, you can only jump indirectly via the CTR or LR registers.

        ld 9,0(29)       # opline.200_67->handler, gotovar.1505_2678
        mtctr 9  # gotovar.1505_2678, gotovar.1505_2678
        bctr


Most likely what is happening is the indirect branch predictor is not
predicting the branch correctly on the powerpc side while it is on the x86
side.  This is a micro-architecture difference between the two chips and is
unrelated to the ISA differences.

Reply via email to