[all-commits] [llvm/llvm-project] 44fa47: [ARM][ConstantIslands] Fix stack mis-alignment cau...

huihzhang via All-commits all-commits at lists.llvm.org
Mon Mar 2 16:29:17 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 44fa47c9e7eac68bed624246ad4edf7570a6397b
      https://github.com/llvm/llvm-project/commit/44fa47c9e7eac68bed624246ad4edf7570a6397b
  Author: Huihui Zhang <huihuiz at quicinc.com>
  Date:   2020-03-02 (Mon, 02 Mar 2020)

  Changed paths:
    M llvm/lib/Target/ARM/ARMConstantIslandPass.cpp
    M llvm/lib/Target/ARM/ARMFrameLowering.cpp
    M llvm/lib/Target/ARM/ARMMachineFunctionInfo.h
    R llvm/test/CodeGen/Thumb/remove-unneeded-push-pop.ll
    A llvm/test/CodeGen/Thumb/stack-mis-alignment.ll

  Log Message:
  -----------
  [ARM][ConstantIslands] Fix stack mis-alignment caused by undoLRSpillRestore.

Summary:
It is not safe for ARMConstantIslands to undoLRSpillRestore. PrologEpilogInserter is
the one to ensure stack alignment, taking into consideration LR is spilled or not.

For noreturn function with StackAlignment 8 (function contains call/alloc),
undoLRSpillRestore cause stack be mis-aligned. Fixing stack alignment in
ARMConstantIslands doesn't give us much benefit, as undo LR spill/restore only
occur in large function with near branches only, also doesn't have callee-saved LR spill.

Reviewers: t.p.northover, rengolin, efriedma, apazos, samparker, ostannard

Reviewed By: ostannard

Subscribers: dmgreen, ostannard, kristof.beyls, hiraditya, llvm-commits

Tags: #llvm

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




More information about the All-commits mailing list