mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
ad53b5a454
Avoid having to instantiate and compile a subset of the dominator tree logic separately for each node type. More importantly, this allows generic algorithms to be built on top of dominator trees without writing them as templates -- such algorithms can now use opaque CfgBlockRef and CfgInterface instead. A type-erased implementation of dominator trees could be written in terms of CfgInterface as well, but doing so would change the current trade-off: it would slightly reduce code size at the cost of a slight runtime overhead. This patch does not change the trade-off, as it only does type-erasure where basic blocks can be treated in a fully opaque way, i.e. it only moves methods that don't require iteration over CFG successors and predecessors. v5: - rename generic_{begin,end,children} back without the generic_ prefix and refer explictly to base class methods in NewGVN, which wants to mutate the order of dominator tree node children directly v6: - style change: iDom -> idom; it's arguable whether this is really invalid, since it is actually standard camelCase, but clang-tidy complains about it so... *shrug* - rename {to,from}Generic -> {wrap,unwrap}Ref Change-Id: Ib860dc04cf8bb093d8ed00be7def40d662213672 Differential Revision: https://reviews.llvm.org/D83089 |
||
---|---|---|
.. | ||
Unix | ||
Windows | ||
AArch64TargetParser.cpp | ||
ABIBreak.cpp | ||
Allocator.cpp | ||
AMDGPUMetadata.cpp | ||
APFixedPoint.cpp | ||
APFloat.cpp | ||
APInt.cpp | ||
APSInt.cpp | ||
ARMAttributeParser.cpp | ||
ARMBuildAttrs.cpp | ||
ARMTargetParser.cpp | ||
ARMWinEH.cpp | ||
Atomic.cpp | ||
BinaryStreamError.cpp | ||
BinaryStreamReader.cpp | ||
BinaryStreamRef.cpp | ||
BinaryStreamWriter.cpp | ||
BlockFrequency.cpp | ||
BranchProbability.cpp | ||
BuryPointer.cpp | ||
CachePruning.cpp | ||
CfgTraits.cpp | ||
Chrono.cpp | ||
circular_raw_ostream.cpp | ||
CMakeLists.txt | ||
CodeGenCoverage.cpp | ||
COM.cpp | ||
CommandLine.cpp | ||
Compression.cpp | ||
ConvertUTF.cpp | ||
ConvertUTFWrapper.cpp | ||
COPYRIGHT.regex | ||
CrashRecoveryContext.cpp | ||
CRC.cpp | ||
DAGDeltaAlgorithm.cpp | ||
DataExtractor.cpp | ||
Debug.cpp | ||
DebugCounter.cpp | ||
DeltaAlgorithm.cpp | ||
DJB.cpp | ||
DynamicLibrary.cpp | ||
ELFAttributeParser.cpp | ||
ELFAttributes.cpp | ||
Errno.cpp | ||
Error.cpp | ||
ErrorHandling.cpp | ||
ExtensibleRTTI.cpp | ||
FileCollector.cpp | ||
FileOutputBuffer.cpp | ||
FileUtilities.cpp | ||
FoldingSet.cpp | ||
FormattedStream.cpp | ||
FormatVariadic.cpp | ||
GenericDomTree.cpp | ||
GlobPattern.cpp | ||
GraphWriter.cpp | ||
Hashing.cpp | ||
Host.cpp | ||
InitLLVM.cpp | ||
IntEqClasses.cpp | ||
IntervalMap.cpp | ||
ItaniumManglingCanonicalizer.cpp | ||
JSON.cpp | ||
KnownBits.cpp | ||
LEB128.cpp | ||
LineIterator.cpp | ||
LLVMBuild.txt | ||
Locale.cpp | ||
LockFileManager.cpp | ||
LowLevelType.cpp | ||
ManagedStatic.cpp | ||
MathExtras.cpp | ||
MD5.cpp | ||
MemAlloc.cpp | ||
Memory.cpp | ||
MemoryBuffer.cpp | ||
MemoryBufferRef.cpp | ||
NativeFormatting.cpp | ||
OptimizedStructLayout.cpp | ||
Optional.cpp | ||
Parallel.cpp | ||
Path.cpp | ||
PluginLoader.cpp | ||
PrettyStackTrace.cpp | ||
Process.cpp | ||
Program.cpp | ||
RandomNumberGenerator.cpp | ||
raw_os_ostream.cpp | ||
raw_ostream.cpp | ||
regcomp.c | ||
regengine.inc | ||
regerror.c | ||
regex2.h | ||
regex_impl.h | ||
Regex.cpp | ||
regexec.c | ||
regfree.c | ||
regstrlcpy.c | ||
regutils.h | ||
RISCVAttributeParser.cpp | ||
RISCVAttributes.cpp | ||
RWMutex.cpp | ||
ScaledNumber.cpp | ||
ScopedPrinter.cpp | ||
SHA1.cpp | ||
Signals.cpp | ||
Signposts.cpp | ||
SmallPtrSet.cpp | ||
SmallVector.cpp | ||
SourceMgr.cpp | ||
SpecialCaseList.cpp | ||
Statistic.cpp | ||
StringExtras.cpp | ||
StringMap.cpp | ||
StringRef.cpp | ||
StringSaver.cpp | ||
SuffixTree.cpp | ||
SymbolRemappingReader.cpp | ||
SystemUtils.cpp | ||
TargetParser.cpp | ||
TargetRegistry.cpp | ||
TarWriter.cpp | ||
Threading.cpp | ||
ThreadLocal.cpp | ||
ThreadPool.cpp | ||
TimeProfiler.cpp | ||
Timer.cpp | ||
ToolOutputFile.cpp | ||
TrigramIndex.cpp | ||
Triple.cpp | ||
Twine.cpp | ||
Unicode.cpp | ||
UnicodeCaseFold.cpp | ||
Valgrind.cpp | ||
VersionTuple.cpp | ||
VirtualFileSystem.cpp | ||
Watchdog.cpp | ||
WithColor.cpp | ||
X86TargetParser.cpp | ||
xxhash.cpp | ||
YAMLParser.cpp | ||
YAMLTraits.cpp | ||
Z3Solver.cpp |