llvm-project/polly/lib/Analysis
Michael Kruse 58e4e71fc8 [Polly] Introduce caching for the isErrorBlock function. NFC.
Compilation of the file insn-attrtab.c of the SPEC CPU 2017 502.gcc_r
benchmark takes excessive time (> 30min) with Polly enabled. Most time
is spent in the isErrorBlock function querying the DominatorTree.
The isErrorBlock is invoked redundantly over the course of ScopDetection
and ScopBuilder. This patch introduces a caching mechanism for its
result.

Instead of a free function, isErrorBlock is moved to ScopDetection where
its cache map resides. This also means that many functions directly or
indirectly calling isErrorBlock are not "const" anymore. The
DetectionContextMap was marked as "mutable", but IMHO it never should
have been since it stores the detection result.

502.gcc_r only takes excessive time with the new pass manager. The
reason seeams to be that it invalidates the ScopDetection analysis more
often than the legacy pass manager, for unknown reasons.
2021-08-18 14:05:50 -05:00
..
DependenceInfo.cpp [Polly][Isl] Move to the new-polly-generator branch version of isl-noexceptions.h. NFCI 2021-08-16 15:53:26 +02:00
PolyhedralInfo.cpp [Polly][Isl] Replacing isl method `to_str()` with `stringFromIslObj()`. NFC. 2021-06-15 14:22:10 +02:00
PruneUnprofitable.cpp [Polly] Port PruneUnprofitable to the NewPM. 2021-02-09 23:56:20 -06:00
ScopBuilder.cpp [Polly] Introduce caching for the isErrorBlock function. NFC. 2021-08-18 14:05:50 -05:00
ScopDetection.cpp [Polly] Introduce caching for the isErrorBlock function. NFC. 2021-08-18 14:05:50 -05:00
ScopDetectionDiagnostic.cpp Internalize some cl::opt global variables or move them under namespace llvm 2021-05-07 11:15:43 -07:00
ScopGraphPrinter.cpp [Polly] Introduce caching for the isErrorBlock function. NFC. 2021-08-18 14:05:50 -05:00
ScopInfo.cpp [Polly][Isl] Use isl::val::sub instead of isl::val::sub_ui. NFC 2021-08-17 09:34:52 +02:00
ScopPass.cpp Make dependency between certain analysis passes transitive (reapply) 2021-05-05 15:17:55 +02:00