llvm-project/llvm/unittests/Analysis
Mircea Trofin 97ab068034 [NPM] Do not run function simplification pipeline unnecessarily
The CGSCC pass manager interplay with the FunctionAnalysisManagerCGSCCProxy is 'special' in the sense that the former will rerun the latter if there are changes to a SCC structure; that being said, some of the functions in the SCC may be unchanged. In that case, the function simplification pipeline will be re-run, which impacts compile time[1].

This patch allows the function simplification pipeline be skipped if it was already run and the function was not modified since.

The behavior is currently disabled by default. This is because, currently, the rerunning of the function simplification pipeline on an unchanged function may still result in changes. The patch simplifies investigating and fixing those cases where repeated function pass runs do actually positively impact code quality, while offering an easy workaround for those impacted negatively by compile time regressions, and not impacting mainline scenarios.

[1] A [[ http://llvm-compile-time-tracker.com/compare.php?from=eb37d3546cd0c6e67798496634c45e501f7806f1&to=ac722d1190dc7bbdd17e977ef7ec95e69eefc91e&stat=instructions | compile time tracker ]] run with the option enabled.

Differential Revision: https://reviews.llvm.org/D98103
2021-05-06 12:24:33 -07:00
..
Inputs/ir2native_x86_64_model Reapply "[llvm] Native size estimator for training -Oz inliner" 2020-07-13 16:26:26 -07:00
AliasAnalysisTest.cpp [AA][NFC] Convert AliasResult to class containing offset for PartialAlias case. 2021-04-09 13:26:09 +03:00
AliasSetTrackerTest.cpp [NFC] Reduce include files dependency. 2020-12-03 18:25:05 +03:00
AssumeBundleQueriesTest.cpp Plumb AssumeInst through operand bundle apis [nfc] 2021-04-06 12:53:53 -07:00
BasicAliasAnalysisTest.cpp [NFC] Reduce include files dependency. 2020-12-03 18:25:05 +03:00
BlockFrequencyInfoTest.cpp Switch from llvm::is_trivially_copyable to std::is_trivially_copyable 2020-12-02 22:02:48 -08:00
BranchProbabilityInfoTest.cpp
CFGTest.cpp
CGSCCPassManagerTest.cpp [NPM] Do not run function simplification pipeline unnecessarily 2021-05-06 12:24:33 -07:00
CMakeLists.txt [IRSim] Adding IR Instruction Mapper 2020-09-17 14:06:16 -05:00
CallGraphTest.cpp
CaptureTrackingTest.cpp [CaptureTrackingTest] Add missing override marker (NFC) 2020-11-07 11:44:02 +01:00
ConstraintSystemTest.cpp [ConstraintSolver] Add isConditionImplied helper. 2020-09-15 13:50:11 +01:00
DDGTest.cpp [DDG] Fix duplicate edge removal during pi-block formation 2021-01-07 10:31:11 -05:00
DivergenceAnalysisTest.cpp [NewPM] Introduce (GPU)DivergenceAnalysis in the new pass manager 2021-02-16 10:26:45 +05:30
DomTreeUpdaterTest.cpp
FunctionPropertiesAnalysisTest.cpp Add new function properties to FunctionPropertiesAnalysis 2020-07-23 12:46:47 -07:00
GlobalsModRefTest.cpp [NFC] Reduce include files dependency. 2020-12-03 18:25:05 +03:00
IRSimilarityIdentifierTest.cpp [IRSim] Letting call instructions be legal for similarity identification. 2020-12-31 20:52:45 -06:00
IVDescriptorsTest.cpp [Analysis][LoopVectorize] rename "Unsafe" variables/methods; NFC 2021-03-04 10:40:26 -05:00
LazyCallGraphTest.cpp [CGSCC][Coroutine][NewPM] Properly support function splitting/outlining 2021-01-06 11:19:15 -08:00
LoadsTest.cpp [Loads] Add canReplacePointersIfEqual helper. 2020-09-01 20:57:41 +01:00
LoopInfoTest.cpp
LoopNestTest.cpp LoopAnalysisManager.h - reduce includes to forward declarations. NFC. 2020-06-06 14:06:46 +01:00
MemoryBuiltinsTest.cpp
MemorySSATest.cpp [AA][NFC] Convert AliasResult to class containing offset for PartialAlias case. 2021-04-09 13:26:09 +03:00
PhiValuesTest.cpp
ProfileSummaryInfoTest.cpp Revert "Use uint64_t for branch weights instead of uint32_t" 2020-10-31 00:25:32 -07:00
ScalarEvolutionTest.cpp [SCEV] Improve handling of not expressions in isImpliedCond() 2021-03-24 21:53:02 +01:00
SparsePropagation.cpp
TBAATest.cpp
TFUtilsTest.cpp [NFC][TFUtils] Extract out the output spec loader 2020-11-18 20:03:20 -08:00
TargetLibraryInfoTest.cpp [Analysis] Support AIX vec_malloc routines 2021-01-22 16:03:01 -05:00
UnrollAnalyzerTest.cpp ScalarEvolution.h - reduce LoopInfo.h include to forward declarations. NFC. 2020-06-17 15:48:23 +01:00
ValueLatticeTest.cpp
ValueTrackingTest.cpp [ValueTracking] match negative-stepping non-zero recurrence 2021-04-14 08:57:53 -04:00
VectorFunctionABITest.cpp [Analysis] Change VFABI::mangleTLIVectorName to use ElementCount 2021-02-12 09:38:12 +00:00
VectorUtilsTest.cpp Revert "Revert "[NFC][llvm] Make the contructors of `ElementCount` private."" 2020-08-19 17:26:36 +00:00