mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-21 03:28:13 +00:00
e35a5f5518
the exponential behavior. The patch is to fix PR32043. Functions getZeroExtendExpr and getSignExtendExpr may call themselves recursively more than once. This is potentially a 2^N complexity behavior. The exponential behavior was not commonly exposed before because of existing global cache mechnism like UniqueSCEVs or some early return mechanism when flags FlagNSW or FlagNUW are seen. However, we still have case which can expose the exponential behavior, like the case in PR32043, so we add a local cache in getZeroExtendExpr and getSignExtendExpr. If the input of the functions -- SCEV and type pair have been seen before, we can find the extended expression directly in the local cache. Differential Revision: https://reviews.llvm.org/D30350 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@300494 91177308-0d34-0410-b5e6-96231b3b80d8 |
||
---|---|---|
.. | ||
AliasAnalysisTest.cpp | ||
BlockFrequencyInfoTest.cpp | ||
BranchProbabilityInfoTest.cpp | ||
CallGraphTest.cpp | ||
CFGTest.cpp | ||
CGSCCPassManagerTest.cpp | ||
CMakeLists.txt | ||
LazyCallGraphTest.cpp | ||
LoopInfoTest.cpp | ||
MemoryBuiltinsTest.cpp | ||
MemorySSA.cpp | ||
ProfileSummaryInfoTest.cpp | ||
ScalarEvolutionTest.cpp | ||
TargetLibraryInfoTest.cpp | ||
TBAATest.cpp | ||
UnrollAnalyzer.cpp | ||
ValueTrackingTest.cpp |