[all-commits] [llvm/llvm-project] 041a78: [AArch64] Fix pairing different types of registers...

Zhaoxuan Jiang via All-commits all-commits at lists.llvm.org
Mon Oct 16 23:34:17 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 041a786c78fbcee3537ca636bf796bb18fb6f313
      https://github.com/llvm/llvm-project/commit/041a786c78fbcee3537ca636bf796bb18fb6f313
  Author: Zhaoxuan Jiang <jiangzhaoxuan94 at gmail.com>
  Date:   2023-10-16 (Mon, 16 Oct 2023)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
    M llvm/lib/Target/AArch64/AArch64LowerHomogeneousPrologEpilog.cpp
    A llvm/test/CodeGen/AArch64/arm64-homogeneous-prolog-epilog-odd-csrs.ll

  Log Message:
  -----------
  [AArch64] Fix pairing different types of registers when computing CSRs. (#66642)

If a function has odd number of same type of registers to save, and the
calling convention also requires odd number of such type of CSRs, an FP
register would be accidentally marked as saved when producePairRegisters
returns true.

This patch also fixes the AArch64LowerHomogeneousPrologEpilog pass not
handling AArch64::NoRegister; actually this pass must be fixed along
with the register pairing so i can write a test for it.




More information about the All-commits mailing list