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

--- Comment #56 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-11 branch has been updated by Iain D Sandoe
<ia...@gcc.gnu.org>:

https://gcc.gnu.org/g:383295aaada04b02b733ab6b9e069dfb020d47b3

commit r11-8784-g383295aaada04b02b733ab6b9e069dfb020d47b3
Author: Iain Sandoe <i...@sandoe.co.uk>
Date:   Mon May 3 08:22:53 2021 +0100

    Darwin, X86: Adjust call clobbers to allow for lazy-binding [PR 100152].

    We allow public functions defined in a TU to bind locally for PIC
    code (the default) on 64bit Mach-O.

    If such functions are not inlined, we cannot tell at compile-time if
    they might be called via the lazy symbol resolver (this can depend on
    options given at link-time).  Therefore, we must assume that the lazy
    resolver could be used which clobbers R11 and R10.

    Signed-off-by: Iain Sandoe <i...@sandoe.co.uk>

    gcc/ChangeLog:

            PR target/100152
            * config/i386/i386-expand.c (ix86_expand_call): If a call is
            to a non-local-binding, or local but to a public symbol, then
            assume that it might be indirected via the lazy symbol binder.
            Mark R10 and R10 as clobbered in that case.

    (cherry picked from commit 41bd1b190358fce213f5add8396faf14a32d5c23)

Reply via email to