forked from OSchip/llvm-project
7175cffb21
Recursively traversing the operand tree leads to an exponential blowup if instructions are used multiple times due to every path leading to an additional copy of the instructions after forwarding. This problem was marked as a TODO in the code and was reported as a bug in llvm.org/PR47340. Fix by caching already visited instructions and returning the cached version when already visited. Instead of calling forwardTree() twice, return a ForwardingAction structure that contains a lambda which will carry-out the forwarding when requested. The lambdas are executed in reverse-postorder to mimic the previous recursive calls unless there is a reuse. Fixes llvm.org/PR47340 |
||
---|---|---|
.. | ||
CodeGen | ||
DeLICM | ||
DeadCodeElimination | ||
DependenceInfo | ||
FlattenSchedule | ||
ForwardOpTree | ||
GPGPU | ||
Isl | ||
JSONExporter | ||
MaximalStaticExpansion | ||
PruneUnprofitable | ||
RewriteByReferenceParameters | ||
ScheduleOptimizer | ||
ScopDetect | ||
ScopDetectionDiagnostics | ||
ScopInfo | ||
ScopInliner | ||
Simplify | ||
Support | ||
Unit | ||
UnitIsl | ||
CMakeLists.txt | ||
README | ||
create_ll.sh | ||
lit.cfg | ||
lit.site.cfg.in | ||
polly.ll | ||
update_check.py |
README
place tests here