AArch64CollectLOH: Rewrite as block-local analysis.
authorMatthias Braun <matze@braunis.de>
Sat, 17 Dec 2016 01:15:59 +0000 (01:15 +0000)
committerMatthias Braun <matze@braunis.de>
Sat, 17 Dec 2016 01:15:59 +0000 (01:15 +0000)
commite813cf457ae2e4e7d6e219b01665e14c31e17ef4
tree6a5b9a046b100158e4f9273ef799ac2fb3834f64
parent39ae3d5c4e5552fc1edbdf6cf605a5158932dfd5
AArch64CollectLOH: Rewrite as block-local analysis.

Re-apply r288561: Liveness tracking should be correct now after r290014.

Previously this pass was using up to 5% compile time in some cases which
is a bit much for what it is doing. The pass featured a full blown
data-flow analysis which in the default configuration was restricted to a
single block.

This rewrites the pass under the assumption that we only ever work on a
single block. This is done in a single pass maintaining a state machine
per general purpose register to catch LOH patterns.

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

llvm-svn: 290026
llvm/lib/Target/AArch64/AArch64CollectLOH.cpp
llvm/test/CodeGen/AArch64/arm64-collect-loh-garbage-crash.ll
llvm/test/CodeGen/AArch64/arm64-collect-loh-str.ll
llvm/test/CodeGen/AArch64/arm64-collect-loh.ll
llvm/test/CodeGen/AArch64/loh.mir [new file with mode: 0644]