mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
ef964ac532
The functions `lookForDIEsToKeep` and `keepDIEAndDependencies` can have some very deep recursion. This tackles part of this problem by removing the recursion from `lookForDIEsToKeep` by turning it into a worklist. The difficulty in doing so is the computation of incompleteness, which depends on the incompleteness of its children. To compute this, we insert "continuation markers" into the worklist. This informs the work loop to (re)compute the incompleteness property of the DIE associated with it (i.e. the parent of the previously processed DIE). This patch should generate byte-identical output. Unfortunately it also has some impact of performance, regressing by about 4% when processing clang on my machine. Differential revision: https://reviews.llvm.org/D48899 llvm-svn: 338536 |
||
---|---|---|
.. | ||
BinaryHolder.cpp | ||
BinaryHolder.h | ||
CFBundle.cpp | ||
CFBundle.h | ||
CMakeLists.txt | ||
CompileUnit.cpp | ||
CompileUnit.h | ||
DebugMap.cpp | ||
DebugMap.h | ||
DeclContext.cpp | ||
DeclContext.h | ||
dsymutil.cpp | ||
dsymutil.h | ||
DwarfLinker.cpp | ||
DwarfLinker.h | ||
DwarfStreamer.cpp | ||
DwarfStreamer.h | ||
LinkUtils.h | ||
LLVMBuild.txt | ||
MachODebugMapParser.cpp | ||
MachOUtils.cpp | ||
MachOUtils.h | ||
NonRelocatableStringpool.cpp | ||
NonRelocatableStringpool.h |