OSDN Git Service

Reapply "[MachineCopyPropagation] Reimplement CopyTracker in terms of register units"
authorJustin Bogner <mail@justinbogner.com>
Mon, 22 Oct 2018 19:51:31 +0000 (19:51 +0000)
committerJustin Bogner <mail@justinbogner.com>
Mon, 22 Oct 2018 19:51:31 +0000 (19:51 +0000)
commitdb46784d64525059fdaf2dc0111784986f1cd961
tree43fe52c22703cd710f44ca867b03dadf048a341b
parent7e3227d6f108792b73234bb313f27c9cd88c40f7
Reapply "[MachineCopyPropagation] Reimplement CopyTracker in terms of register units"

Recommits r342942, which was reverted in r343189, with a fix for an
issue where we would propagate unsafely if we defined only the upper
part of a register.

Original message:

  Change the copy tracker to keep a single map of register units
  instead of 3 maps of registers. This gives a very significant
  compile time performance improvement to the pass. I measured a
  30-40% decrease in time spent in MCP on x86 and AArch64 and much
  more significant improvements on out of tree targets with more
  registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@344942 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/MachineCopyPropagation.cpp
test/CodeGen/AArch64/machine-cp-clobbers.mir [new file with mode: 0644]
test/CodeGen/Hexagon/machine-cp-clobbers.mir [new file with mode: 0644]