OSDN Git Service

Revert r312719 "[MachineCombiner] Update instruction depths incrementally for large...
authorHans Wennborg <hans@hanshq.net>
Wed, 13 Sep 2017 23:23:09 +0000 (23:23 +0000)
committerHans Wennborg <hans@hanshq.net>
Wed, 13 Sep 2017 23:23:09 +0000 (23:23 +0000)
commitc9b4fb74b7960175bc08db23f03b5407d47d8482
treee995bbf0c5a85b7a0427e225829b6a24c75614b8
parent1c29e7f5eb3284fa759150810c7fcf1aee376946
Revert r312719 "[MachineCombiner] Update instruction depths incrementally for large BBs."

This caused PR34596.

> [MachineCombiner] Update instruction depths incrementally for large BBs.
>
> Summary:
> For large basic blocks with lots of combinable instructions, the
> MachineTraceMetrics computations in MachineCombiner can dominate the compile
> time, as computing the trace information is quadratic in the number of
> instructions in a BB and it's relevant successors/predecessors.
>
> In most cases, knowing the instruction depth should be enough to make
> combination decisions. As we already iterate over all instructions in a basic
> block, the instruction depth can be computed incrementally. This reduces the
> cost of machine-combine drastically in cases where lots of instructions
> are combined. The major drawback is that AFAIK, computing the critical path
> length cannot be done incrementally. Therefore we only compute
> instruction depths incrementally, for basic blocks with more
> instructions than inc_threshold. The -machine-combiner-inc-threshold
> option can be used to set the threshold and allows for easier
> experimenting and checking if using incremental updates for all basic
> blocks has any impact on the performance.
>
> Reviewers: sanjoy, Gerolf, MatzeB, efriedma, fhahn
>
> Reviewed By: fhahn
>
> Subscribers: kiranchandramohan, javed.absar, efriedma, llvm-commits
>
> Differential Revision: https://reviews.llvm.org/D36619

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313213 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/MachineTraceMetrics.h
lib/CodeGen/MachineCombiner.cpp
lib/CodeGen/MachineTraceMetrics.cpp
test/CodeGen/AArch64/machine-combiner.ll
test/CodeGen/X86/machine-combiner.ll
test/CodeGen/X86/mul-constant-result.ll