[all-commits] [llvm/llvm-project] f29166: [AArch64][SVE] Disable tail calls if callee does n...

sdesmalen-arm via All-commits all-commits at lists.llvm.org
Wed Aug 5 01:40:08 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: f2916636f83dfeb4808a16045db0025783743471
      https://github.com/llvm/llvm-project/commit/f2916636f83dfeb4808a16045db0025783743471
  Author: Sander de Smalen <sander.desmalen at arm.com>
  Date:   2020-08-05 (Wed, 05 Aug 2020)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
    M llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp
    M llvm/lib/Target/AArch64/AArch64RegisterInfo.h
    A llvm/test/CodeGen/AArch64/sve-tailcall.ll

  Log Message:
  -----------
  [AArch64][SVE] Disable tail calls if callee does not preserve SVE regs.

This fixes an issue triggered by the following code, where emitEpilogue
got confused when trying to restore the SVE registers after the call,
whereas the call to bar() is implemented as a TCReturn:

  int non_sve();
  int sve(svint32_t x) { return non_sve(); }

Reviewed By: efriedma

Differential Revision: https://reviews.llvm.org/D84869




More information about the All-commits mailing list