1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 03:02:36 +01:00
llvm-mirror/lib/Support
Nicolai Hähnle ad53b5a454 DomTree: Extract (mostly) read-only logic into type-erased base classes
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
2020-10-20 19:53:07 +02:00
..
Unix Revert "Reland "[Modules] Add stats to measure performance of building and loading modules."" 2020-10-19 18:27:30 -07:00
Windows Revert "Reland "[Modules] Add stats to measure performance of building and loading modules."" 2020-10-19 18:27:30 -07:00
AArch64TargetParser.cpp [AArch64] Add CPU Cortex-R82 2020-10-02 12:47:23 +01:00
ABIBreak.cpp
Allocator.cpp
AMDGPUMetadata.cpp AMDGPU: Remove .value_type from kernel metadata 2020-07-10 18:16:31 -04:00
APFixedPoint.cpp [Fixed Point] Add floating point methods to APFixedPoint. 2020-10-09 10:27:42 +02:00
APFloat.cpp [APFloat] convert SNaN to QNaN in convert() and raise Invalid signal 2020-10-01 14:37:38 -04:00
APInt.cpp [APInt] New member function setBitVal 2020-09-02 21:40:31 +01:00
APSInt.cpp
ARMAttributeParser.cpp
ARMBuildAttrs.cpp
ARMTargetParser.cpp ARMTargetParser.cpp - use auto const references in for range loops. NFCI. 2020-09-09 11:38:31 +01:00
ARMWinEH.cpp
Atomic.cpp
BinaryStreamError.cpp
BinaryStreamReader.cpp
BinaryStreamRef.cpp
BinaryStreamWriter.cpp
BlockFrequency.cpp
BranchProbability.cpp
BuryPointer.cpp
CachePruning.cpp
CfgTraits.cpp Introduce CfgTraits abstraction 2020-10-20 13:50:52 +02:00
Chrono.cpp
circular_raw_ostream.cpp
CMakeLists.txt DomTree: Extract (mostly) read-only logic into type-erased base classes 2020-10-20 19:53:07 +02:00
CodeGenCoverage.cpp
COM.cpp
CommandLine.cpp [llvm-symbolizer] Switch command line parsing from llvm::cl to OptTable 2020-08-04 08:53:15 -07:00
Compression.cpp [CMake] Simplify CMake handling for zlib 2020-08-11 20:22:11 -07:00
ConvertUTF.cpp
ConvertUTFWrapper.cpp Reland "[Support][unittests] Enforce alignment in ConvertUTFTest" 2020-10-14 12:02:27 +02:00
COPYRIGHT.regex
CrashRecoveryContext.cpp [Support] On Unix, let the CrashRecoveryContext return the signal code 2020-09-24 08:21:43 -04:00
CRC.cpp [CMake] Simplify CMake handling for zlib 2020-08-11 20:22:11 -07:00
DAGDeltaAlgorithm.cpp
DataExtractor.cpp
Debug.cpp
DebugCounter.cpp DebugCounterList::printOptionInfo - use const auto& iterator in for-range-loop. 2020-07-09 11:37:49 +01:00
DeltaAlgorithm.cpp
DJB.cpp
DynamicLibrary.cpp
ELFAttributeParser.cpp
ELFAttributes.cpp
Errno.cpp
Error.cpp [Support] Add a C-API function to create a StringError instance. 2020-10-19 01:59:04 -07:00
ErrorHandling.cpp Improve error handling for SmallVector programming errors 2020-09-02 15:00:26 -07:00
ExtensibleRTTI.cpp
FileCollector.cpp [FileCollector] Move interface into FileCollectorBase (NFC) 2020-10-19 21:37:20 -07:00
FileOutputBuffer.cpp
FileUtilities.cpp
FoldingSet.cpp
FormattedStream.cpp [Support] Fix signed/unsigned comparison warning 2020-07-08 11:26:10 +01:00
FormatVariadic.cpp [NFC] Simplify splitLiteralAndReplacement function 2020-07-22 15:32:32 -07:00
GenericDomTree.cpp DomTree: Extract (mostly) read-only logic into type-erased base classes 2020-10-20 19:53:07 +02:00
GlobPattern.cpp
GraphWriter.cpp
Hashing.cpp
Host.cpp [X86] Add HRESET instruction. 2020-10-13 08:47:26 +08:00
InitLLVM.cpp
IntEqClasses.cpp
IntervalMap.cpp
ItaniumManglingCanonicalizer.cpp
JSON.cpp [json] Provide a means to delegate writing a value to another API 2020-10-07 18:31:45 +02:00
KnownBits.cpp [KnownBits] Add a computeForMul method 2020-10-08 11:33:06 -07:00
LEB128.cpp
LineIterator.cpp Support: Allow use of MemoryBufferRef with line_iterator 2020-10-13 16:43:49 -04:00
LLVMBuild.txt
Locale.cpp
LockFileManager.cpp
LowLevelType.cpp [SVE] Make ElementCount and TypeSize use a new PolySize class 2020-10-12 08:23:38 +01:00
ManagedStatic.cpp
MathExtras.cpp
MD5.cpp
MemAlloc.cpp
Memory.cpp
MemoryBuffer.cpp Revert "[Modules] Add stats to measure performance of building and loading modules." 2020-09-24 12:36:06 -07:00
MemoryBufferRef.cpp Support: Add operator== for MemoryBufferRef and split out MemoryBufferRef.h 2020-10-13 16:42:24 -04:00
NativeFormatting.cpp
OptimizedStructLayout.cpp
Optional.cpp
Parallel.cpp [Support] Define llvm::parallel::strategy for -DLLVM_ENABLE_THREADS=off builds after D76885 2020-07-08 10:51:20 -07:00
Path.cpp Revert "Reland "[Modules] Add stats to measure performance of building and loading modules."" 2020-10-19 18:27:30 -07:00
PluginLoader.cpp
PrettyStackTrace.cpp [Driver] When forcing a crash print the bug report message 2020-06-29 13:13:12 +01:00
Process.cpp Reapply: [clang-cl] Always interpret the LIB env var as separated with semicolons 2020-09-22 10:51:25 +03:00
Program.cpp
RandomNumberGenerator.cpp
raw_os_ostream.cpp
raw_ostream.cpp raw_ostream.cpp - remove duplicate includes. NFCI. 2020-09-16 18:32:28 +01:00
regcomp.c
regengine.inc
regerror.c
regex2.h
regex_impl.h
Regex.cpp [ASTMatchers] Enhanced support for matchers taking Regex arguments 2020-07-02 14:52:25 +01:00
regexec.c
regfree.c
regstrlcpy.c
regutils.h
RISCVAttributeParser.cpp
RISCVAttributes.cpp
RWMutex.cpp
ScaledNumber.cpp
ScopedPrinter.cpp
SHA1.cpp
Signals.cpp Add support for setting the path to llvm-symbolizer through an environment variable 2020-09-24 19:14:04 +00:00
Signposts.cpp
SmallPtrSet.cpp
SmallVector.cpp [SmallVector] Move error handling out of line 2020-09-06 18:06:44 +02:00
SourceMgr.cpp [TableGen] New backend to print detailed records. 2020-10-02 10:22:13 -04:00
SpecialCaseList.cpp As part of using inclusive language within the llvm project, 2020-06-20 00:24:57 -07:00
Statistic.cpp
StringExtras.cpp
StringMap.cpp
StringRef.cpp
StringSaver.cpp
SuffixTree.cpp
SymbolRemappingReader.cpp
SystemUtils.cpp [opt] Remove obsolete --quiet option 2020-07-08 13:21:20 -07:00
TargetParser.cpp [AMDGPU] Drop array size in AMDGCNGPUs and R600GPUs 2020-10-16 12:37:22 -07:00
TargetRegistry.cpp
TarWriter.cpp
Threading.cpp
ThreadLocal.cpp
ThreadPool.cpp
TimeProfiler.cpp
Timer.cpp
ToolOutputFile.cpp
TrigramIndex.cpp TrigramIndex.cpp - remove unnecessary includes. NFCI. 2020-09-09 11:38:31 +01:00
Triple.cpp [RFC][Target] Add a new triple called Triple::csky 2020-09-02 12:46:09 +08:00
Twine.cpp
Unicode.cpp
UnicodeCaseFold.cpp
Valgrind.cpp
VersionTuple.cpp
VirtualFileSystem.cpp [lldb] Add reproducer verifier 2020-09-02 22:00:00 -07:00
Watchdog.cpp
WithColor.cpp WithColor.h - reduce CommandLine.h include to forward declaration. NFC. 2020-06-23 17:07:53 +01:00
X86TargetParser.cpp [X86] Add HRESET instruction. 2020-10-13 08:47:26 +08:00
xxhash.cpp
YAMLParser.cpp Add -Wno-error=unknown flag to clang-format. 2020-09-19 10:17:57 +02:00
YAMLTraits.cpp Add -Wno-error=unknown flag to clang-format. 2020-09-19 10:17:57 +02:00
Z3Solver.cpp [llvm][Z3][NFC] Improve mkBitvector performance 2020-06-30 12:26:50 +02:00