diff options
| author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2014-06-25 07:54:58 +0000 |
|---|---|---|
| committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2014-06-25 07:54:58 +0000 |
| commit | 10280dac1dad5f182ef8a2bde0ee543b246b1599 (patch) | |
| tree | 2162a5296538d5ff25833782adb0ed170d446f33 /llvm/lib/Bitcode/Reader/BitcodeReader.cpp | |
| parent | abfc069d6ca23d96babe56b97581061000a5779b (diff) | |
[LICM] Don't create more than one copy of an instruction per loop exit block when sinking.
Fixes exponential compilation complexity in PR19835, caused by
LICM::sink not handling the following pattern well:
f = op g
e = op f, g
d = op e
c = op d, e
b = op c
a = op b, c
When an instruction with N uses is sunk, each of its operands gets N
new uses (all of them - phi nodes). In the example above, if a had 1
use, c would have 2, e would have 4, and g would have 8.
llvm-svn: 211673
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
0 files changed, 0 insertions, 0 deletions
