On Wed, Jul 8, 2026 at 5:46 AM H.J. Lu <[email protected]> wrote:
>
> Changes in v4:
>
> 1. Use default_function_abi, instead of ix86_tls_get_addr_abi(), in
> ix86_emit_tls_call to get call clobbered registers for GNU TLS calls.

Ok.
>
> Changes in v3:
>
> 1. Don't preserve MMX nor X87 registers.
> 2. Handle return struct pair with int64 and double in AX and XMM0
> registers.
>
> Changes in v2:
>
> 1. Add ix86_tls_get_addr_abi and use it to set CALL_INSN_ABI_ID.
>
> ---
> This patch set implements TARGET_FNTYPE_ABI for x86 to avoid unnecessary
> spills when calling no_caller_saved_registers functions:
>
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124798
>
> and spill callee-saved registers when calling __tls_get_addr from a ms_abi
> function:
>
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125436
>
> The first 3 patches update the x86 backend for TARGET_FNTYPE_ABI and the
> last one implements TARGET_FNTYPE_ABI.
>
> H.J. Lu (1):
>   x86: Implement TARGET_FNTYPE_ABI
>
> Richard Sandiford (3):
>   i386: Split out call_saved_registers_type detection
>   i386: Avoid reading call_used_regs
>   i386: Avoid always-true condition
>
>  gcc/config/i386/i386-expand.cc                | 113 +----
>  gcc/config/i386/i386-features.cc              |  17 +-
>  gcc/config/i386/i386-options.cc               | 152 ++++---
>  gcc/config/i386/i386-protos.h                 |   5 +-
>  gcc/config/i386/i386.cc                       | 386 ++++++++++++++----
>  gcc/config/i386/i386.md                       |  32 +-
>  gcc/testsuite/gcc.target/i386/abi-mix-1.c     |  21 +
>  gcc/testsuite/gcc.target/i386/abi-mix-2.c     |   7 +
>  .../gcc.target/i386/no-callee-saved-18.c      |   2 -
>  .../gcc.target/i386/no-callee-saved-19b.c     |  32 +-
>  .../gcc.target/i386/no-callee-saved-19d.c     |   6 +-
>  .../gcc.target/i386/no-callee-saved-19e.c     |  33 +-
>  .../gcc.target/i386/no-callee-saved-2.c       |  10 +-
>  .../gcc.target/i386/no-callee-saved-20.c      |  92 +++++
>  .../gcc.target/i386/no-callee-saved-8.c       |   8 +-
>  .../gcc.target/i386/no-callee-saved-9.c       |  10 +-
>  .../gcc.target/i386/no-caller-saved-1-ms.c    |  50 +++
>  .../gcc.target/i386/no-caller-saved-1-sysv.c  |  46 +++
>  .../gcc.target/i386/no-caller-saved-1.c       |  50 +++
>  .../gcc.target/i386/no-caller-saved-10.c      |  17 +
>  .../gcc.target/i386/no-caller-saved-11.c      |  19 +
>  .../gcc.target/i386/no-caller-saved-2.c       |  49 +++
>  .../gcc.target/i386/no-caller-saved-3.c       |  49 +++
>  .../gcc.target/i386/no-caller-saved-4.c       |  44 ++
>  .../gcc.target/i386/no-caller-saved-5.c       |  34 ++
>  .../gcc.target/i386/no-caller-saved-6.c       |  34 ++
>  .../gcc.target/i386/no-caller-saved-7.c       |  49 +++
>  .../gcc.target/i386/no-caller-saved-8.c       |  51 +++
>  .../gcc.target/i386/no-caller-saved-9.c       |  51 +++
>  gcc/testsuite/gcc.target/i386/pr119784b.c     |  33 +-
>  gcc/testsuite/gcc.target/i386/pr125436-1a.c   | 130 ++++++
>  gcc/testsuite/gcc.target/i386/pr125436-1b.c   |  81 ++++
>  gcc/testsuite/gcc.target/i386/pr125436-2a.c   | 132 ++++++
>  gcc/testsuite/gcc.target/i386/pr125436-2b.c   |  83 ++++
>  gcc/testsuite/gcc.target/i386/pr125436-3.c    |  88 ++++
>  gcc/testsuite/gcc.target/i386/pr125436-4.c    |  88 ++++
>  .../gcc.target/i386/preserve-none-14.c        |   2 -
>  .../gcc.target/i386/preserve-none-23.c        |   2 -
>  .../gcc.target/i386/preserve-none-7.c         |  10 +-
>  39 files changed, 1777 insertions(+), 341 deletions(-)
>  create mode 100644 gcc/testsuite/gcc.target/i386/abi-mix-1.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/abi-mix-2.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/no-callee-saved-20.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/no-caller-saved-1-ms.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/no-caller-saved-1-sysv.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/no-caller-saved-1.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/no-caller-saved-10.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/no-caller-saved-11.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/no-caller-saved-2.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/no-caller-saved-3.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/no-caller-saved-4.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/no-caller-saved-5.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/no-caller-saved-6.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/no-caller-saved-7.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/no-caller-saved-8.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/no-caller-saved-9.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr125436-1a.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr125436-1b.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr125436-2a.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr125436-2b.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr125436-3.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr125436-4.c
>
> --
> 2.55.0
>


-- 
BR,
Hongtao

Reply via email to