1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-26 12:43:36 +01:00
llvm-mirror/lib/DebugInfo/GSYM
Greg Clayton 22dbb17db3 Optimize GSymCreator::finalize.
The algorithm removing duplicates from the Funcs list used to have
amortized quadratic time complexity because it was potentially
removing each entry using std::vector::erase individually. This
patch is now using a erase-remove idiom with an adapted
removeIfBinary algorithm.

Probably this was made under the assumption that these removals are
rare, but there are cases where the case of duplicate entries is
occurring frequently. In these cases, the actual runtime was very
poor, taking hours to process a single binary of around 1 GiB size
including debug info. Another factor contributing to that is the
frequent output of the warning, which is now removed.

It seems this is particularly an issue with GCC-compiled binaries,
rather than clang-built binaries.

Reviewed By: clayborg

Differential Revision: https://reviews.llvm.org/D102219
2021-05-12 15:18:07 -07:00
..
CMakeLists.txt llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
DwarfTransformer.cpp [NFC] Move ValidTextRanges out of DwarfTransformer and into GsymCreator and unify address is not in GSYM errors so all strings match. 2020-02-15 16:48:23 -08:00
FileWriter.cpp
FunctionInfo.cpp Add a llvm-gsymutil tool that can convert object files to GSYM and perform lookups. 2020-02-25 21:11:05 -08:00
GsymCreator.cpp Optimize GSymCreator::finalize. 2021-05-12 15:18:07 -07:00
GsymReader.cpp Add a llvm-gsymutil tool that can convert object files to GSYM and perform lookups. 2020-02-25 21:11:05 -08:00
Header.cpp Revert "Remove redundant "std::move"s in return statements" 2020-02-10 07:07:40 -08:00
InlineInfo.cpp Add an Offset field to the SourceLocation for LookupResult objects. 2020-02-19 16:12:32 -08:00
LineTable.cpp Revert "Remove redundant "std::move"s in return statements" 2020-02-10 07:07:40 -08:00
LookupResult.cpp Add a llvm-gsymutil tool that can convert object files to GSYM and perform lookups. 2020-02-25 21:11:05 -08:00
ObjectFileTransformer.cpp [Object] Change ObjectFile::getSymbolValue() return type to Expected<uint64_t> 2020-05-02 14:04:44 +08:00
Range.cpp Add a llvm-gsymutil tool that can convert object files to GSYM and perform lookups. 2020-02-25 21:11:05 -08:00