[all-commits] [llvm/llvm-project] d88f96: ARM: support mandatory tail calls for tailcc & swi...

Tim Northover via All-commits all-commits at lists.llvm.org
Fri May 28 03:12:25 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: d88f96dff3f192fc0c1bf57f7810b95a709b3591
      https://github.com/llvm/llvm-project/commit/d88f96dff3f192fc0c1bf57f7810b95a709b3591
  Author: Tim Northover <t.p.northover at gmail.com>
  Date:   2021-05-28 (Fri, 28 May 2021)

  Changed paths:
    M llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp
    M llvm/lib/Target/ARM/ARMCallingConv.td
    M llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp
    M llvm/lib/Target/ARM/ARMFastISel.cpp
    M llvm/lib/Target/ARM/ARMFrameLowering.cpp
    M llvm/lib/Target/ARM/ARMISelLowering.cpp
    M llvm/lib/Target/ARM/ARMISelLowering.h
    M llvm/lib/Target/ARM/ARMInstrInfo.td
    M llvm/lib/Target/ARM/ARMMachineFunctionInfo.h
    M llvm/lib/Target/ARM/ARMSubtarget.cpp
    M llvm/test/CodeGen/ARM/dbg-tcreturn.ll
    A llvm/test/CodeGen/ARM/fastcc-tailcall.ll
    M llvm/test/CodeGen/ARM/peephole-callee-save-regalloc.mir
    A llvm/test/CodeGen/ARM/swifttailcc-call.ll
    A llvm/test/CodeGen/ARM/swifttailcc-fastisel.ll
    A llvm/test/CodeGen/ARM/tailcc-call.ll
    M llvm/test/CodeGen/ARM/v8m-tail-call.ll

  Log Message:
  -----------
  ARM: support mandatory tail calls for tailcc & swifttailcc

This adds support for callee-pop conventions to the ARM backend so that it can
ensure a call marked "tail" is actually a tail call.


  Commit: 9ff2eb1ea596a52ad2b5cfab826548c3af0a1e6e
      https://github.com/llvm/llvm-project/commit/9ff2eb1ea596a52ad2b5cfab826548c3af0a1e6e
  Author: Tim Northover <t.p.northover at gmail.com>
  Date:   2021-05-28 (Fri, 28 May 2021)

  Changed paths:
    M llvm/docs/LangRef.rst
    M llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
    M llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h
    M llvm/lib/IR/Verifier.cpp
    M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
    M llvm/lib/Target/ARM/ARMISelLowering.cpp
    M llvm/lib/Target/X86/X86ISelLowering.cpp
    M llvm/test/CodeGen/AArch64/swifttail-call.ll
    A llvm/test/CodeGen/AArch64/tailcc-notail.ll
    A llvm/test/CodeGen/ARM/tailcc-notail.ll
    M llvm/test/CodeGen/X86/tailcall-swifttailcc.ll
    A llvm/test/CodeGen/X86/tailcc-notail.ll
    A llvm/test/Verifier/swifttailcc-musttail-valid.ll
    A llvm/test/Verifier/swifttailcc-musttail.ll
    A llvm/test/Verifier/tailcc-musttail.ll

  Log Message:
  -----------
  SwiftTailCC: teach verifier musttail rules applicable to this CC.

SwiftTailCC has a different set of requirements than the C calling convention
for a tail call. The exact argument sequence doesn't have to match, but fewer
ABI-affecting attributes are allowed.

Also make sure the musttail diagnostic triggers if a musttail call isn't
actually a tail call.


Compare: https://github.com/llvm/llvm-project/compare/66ff1cbd71d2...9ff2eb1ea596


More information about the All-commits mailing list