AArch64CollectLOH: Rewrite as block-local analysis.
authorMatthias Braun <matze@braunis.de>
Sat, 3 Dec 2016 00:52:56 +0000 (00:52 +0000)
committerMatthias Braun <matze@braunis.de>
Sat, 3 Dec 2016 00:52:56 +0000 (00:52 +0000)
commit1fbb0f6dd9979ae469040b43c9d9262f4430611e
tree2a3538b098329fd9ce434890447072b0aac41d59
parent835de1f3ab2df5ce56eab9e5d9021a26fe04b854
AArch64CollectLOH: Rewrite as block-local analysis.

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: 288561
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]