[all-commits] [llvm/llvm-project] 920bef: [FastISel] Reduce spills around mem-intrinsic calls

Paul T Robinson via All-commits all-commits at lists.llvm.org
Mon Nov 9 09:50:08 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 920befb337ae950009d691aed31ab97089009db2
      https://github.com/llvm/llvm-project/commit/920befb337ae950009d691aed31ab97089009db2
  Author: Paul Robinson <paul.robinson at sony.com>
  Date:   2020-11-09 (Mon, 09 Nov 2020)

  Changed paths:
    M llvm/lib/CodeGen/SelectionDAG/FastISel.cpp
    M llvm/test/CodeGen/AArch64/arm64-abi_align.ll
    A llvm/test/CodeGen/X86/fastisel-memset-flush.ll

  Log Message:
  -----------
  [FastISel] Reduce spills around mem-intrinsic calls

FastISel generates instructions to materialize "local values" at the
top of a block, in the hope that these values could be reused within
the block.  To reduce spills and restores, FastISel treats calls as
sub-block boundaries, flushing the "local value map" at each call.

This patch treats the mem* intrinsics as if they were calls, because
at O0 generally they are calls.  Eliminating these spills/restores is
actually better for debugging (especially a "continue at this line"
command), code size, stack frame size, and maybe even performance.

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




More information about the All-commits mailing list