[all-commits] [llvm/llvm-project] acd258: [MachineOutliner][AArch64] Save + restore LR in no...

Jessica Paquette via All-commits all-commits at lists.llvm.org
Tue Jan 7 11:27:36 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: acd258082477b8a4edf3037127efb5fed4494da3
      https://github.com/llvm/llvm-project/commit/acd258082477b8a4edf3037127efb5fed4494da3
  Author: Jessica Paquette <jpaquette at apple.com>
  Date:   2020-01-07 (Tue, 07 Jan 2020)

  Changed paths:
    M llvm/lib/CodeGen/MachineOutliner.cpp
    M llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
    A llvm/test/CodeGen/AArch64/machine-outliner-noreturn-save-lr.mir
    R llvm/test/CodeGen/AArch64/machine-outliner-noreturn.mir

  Log Message:
  -----------
  [MachineOutliner][AArch64] Save + restore LR in noreturn functions

Conservatively always save + restore LR in noreturn functions.

These functions do not end in a RET, and so they aren't guaranteed to have an
instruction which uses LR in any way. So, as a result, you can end up in
unfortunate situations where you can't backtrace out of these functions in a
debugger.

Remove the old noreturn test, and add a new one which is more descriptive.

Remove the restriction that we can't outline from noreturn functions as well
since we now do the right thing.




More information about the All-commits mailing list