[PATCH] D96035: [dsymutil][DWARFlinker] implement separate multi-thread processing for compile units.

Alexey Lapshin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 31 08:40:39 PST 2022


avl updated this revision to Diff 404549.
avl added a comment.
Herald added a subscriber: dexonsmith.

rebased.
refactored.
implemented performance improvements(it is 1.3x slower in single thread mode, 2.4x faster im multi-thread mode).
implemented types splitting.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D96035/new/

https://reviews.llvm.org/D96035

Files:
  llvm/include/llvm/ADT/LockFreeDataPool.h
  llvm/include/llvm/ADT/StringMapEntry.h
  llvm/include/llvm/CodeGen/DwarfStringPoolEntry.h
  llvm/include/llvm/DWARFLinker/DWARFLinker.h
  llvm/include/llvm/DWARFLinkerNext/DWARFDebugStrTable.h
  llvm/include/llvm/DWARFLinkerNext/DWARFLinker.h
  llvm/include/llvm/DWARFLinkerNext/DWARFLinkerCompileUnit.h
  llvm/include/llvm/DWARFLinkerNext/DWARFLinkerTypeTableUnit.h
  llvm/include/llvm/DWARFLinkerNext/DWARFLinkerUnit.h
  llvm/include/llvm/DWARFLinkerNext/DWARFLinkerUtil.h
  llvm/include/llvm/DWARFLinkerNext/DWARFStreamer.h
  llvm/include/llvm/DWARFLinkerNext/DiesDataPool.h
  llvm/include/llvm/DWARFLinkerNext/MTSafeSimpleList.h
  llvm/include/llvm/DWARFLinkerNext/StringPool.h
  llvm/include/llvm/DWARFLinkerNext/TypePool.h
  llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h
  llvm/lib/CMakeLists.txt
  llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
  llvm/lib/CodeGen/NonRelocatableStringpool.cpp
  llvm/lib/DWARFLinker/DWARFLinker.cpp
  llvm/lib/DWARFLinkerNext/CMakeLists.txt
  llvm/lib/DWARFLinkerNext/DWARFDieCloner.cpp
  llvm/lib/DWARFLinkerNext/DWARFDieCloner.h
  llvm/lib/DWARFLinkerNext/DWARFLinker.cpp
  llvm/lib/DWARFLinkerNext/DWARFLinkerCompileUnit.cpp
  llvm/lib/DWARFLinkerNext/DWARFLinkerTypeTableUnit.cpp
  llvm/lib/DWARFLinkerNext/DWARFLinkerUnit.cpp
  llvm/lib/DWARFLinkerNext/DWARFLinkerUtil.cpp
  llvm/lib/DWARFLinkerNext/DWARFStreamer.cpp
  llvm/lib/DWARFLinkerNext/DependencyTracker.cpp
  llvm/lib/DWARFLinkerNext/DependencyTracker.h
  llvm/lib/DWARFLinkerNext/SyntheticTypeNameBuilder.cpp
  llvm/lib/DWARFLinkerNext/SyntheticTypeNameBuilder.h
  llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp
  llvm/test/tools/dsymutil/DWARFLinkerNext/Inputs/String/foo1.o
  llvm/test/tools/dsymutil/DWARFLinkerNext/Inputs/String/foo2.o
  llvm/test/tools/dsymutil/DWARFLinkerNext/Inputs/String/foo3.o
  llvm/test/tools/dsymutil/DWARFLinkerNext/Inputs/String/main.o
  llvm/test/tools/dsymutil/DWARFLinkerNext/Inputs/call-site-entry.c
  llvm/test/tools/dsymutil/DWARFLinkerNext/Inputs/call-site-entry.macho.x86_64
  llvm/test/tools/dsymutil/DWARFLinkerNext/Inputs/call-site-entry.macho.x86_64.o
  llvm/test/tools/dsymutil/DWARFLinkerNext/Inputs/local_functor.o
  llvm/test/tools/dsymutil/DWARFLinkerNext/Inputs/tail-call.cpp
  llvm/test/tools/dsymutil/DWARFLinkerNext/Inputs/tail-call.macho.x86_64
  llvm/test/tools/dsymutil/DWARFLinkerNext/Inputs/tail-call.macho.x86_64.o
  llvm/test/tools/dsymutil/DWARFLinkerNext/accelerator.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/alias.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/assembly-output.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/basic-linking-bundle.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/basic-linking-x86.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/basic-lto-dw4-linking-x86.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/basic-lto-linking-x86.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/basic-with-libfat-test.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/call-site-entry-linking.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/call-site-entry-reloc.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/common-sym-multi.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/common-sym.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/custom-line-table.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/darwin-bundle.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/dead-stripped.cpp
  llvm/test/tools/dsymutil/DWARFLinkerNext/debug-loc-base-addr.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/dsym-companion.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/dummy-debug-map.map
  llvm/test/tools/dsymutil/DWARFLinkerNext/dwarf4-linetable.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/dwarf5-linetable.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/dwarf5.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/eh_frame.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/empty-CU.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/empty_range.s
  llvm/test/tools/dsymutil/DWARFLinkerNext/fat-archive-input-i386.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/fat-object-input-x86_64.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/fat-object-input-x86_64h.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/frame-1.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/frame-2.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/generate-empty-CU.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/global_downgraded_to_static.c
  llvm/test/tools/dsymutil/DWARFLinkerNext/inlined-static-variable.cpp
  llvm/test/tools/dsymutil/DWARFLinkerNext/keep-func.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/label.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/label2.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/lc_build_version.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/lit.local.cfg
  llvm/test/tools/dsymutil/DWARFLinkerNext/local-functor.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/mismatch.m
  llvm/test/tools/dsymutil/DWARFLinkerNext/module-warnings.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/modules-dwarf-version.m
  llvm/test/tools/dsymutil/DWARFLinkerNext/modules-empty.m
  llvm/test/tools/dsymutil/DWARFLinkerNext/modules-pruning.cpp
  llvm/test/tools/dsymutil/DWARFLinkerNext/modules.m
  llvm/test/tools/dsymutil/DWARFLinkerNext/multiple-inputs.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/objc.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/object-prefix-path.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/odr-anon-namespace.cpp
  llvm/test/tools/dsymutil/DWARFLinkerNext/odr-constructors.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/odr-fwd-declaration.cpp
  llvm/test/tools/dsymutil/DWARFLinkerNext/odr-fwd-declaration2.cpp
  llvm/test/tools/dsymutil/DWARFLinkerNext/odr-fwd-declaration3.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/odr-member-functions.cpp
  llvm/test/tools/dsymutil/DWARFLinkerNext/odr-namespace-extension.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/odr-nested-types1.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/odr-nested-types2.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/odr-parents.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/odr-predictable-output.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/odr-string.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/odr-template-parameters.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/odr-types-in-subprogram1.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/odr-uniquing.cpp
  llvm/test/tools/dsymutil/DWARFLinkerNext/op-convert.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/papertrail-warnings.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/reflection-dump.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/remarks-linking-archive.text
  llvm/test/tools/dsymutil/DWARFLinkerNext/remarks-linking-bundle-empty.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/remarks-linking-bundle.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/remarks-linking-fat-bundle.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/reproducer.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/statistics.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/submodules.m
  llvm/test/tools/dsymutil/DWARFLinkerNext/suppressions.txt
  llvm/test/tools/dsymutil/DWARFLinkerNext/swift-ast-x86_64.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/swift-dwarf-loc.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/swift-interface.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/tail-call-linking.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/template_operators.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/thinlto.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/timestamp-mismatch.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/union-fwd-decl.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/update-one-CU.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/update.test
  llvm/test/tools/dsymutil/DWARFLinkerNext/verify.test
  llvm/tools/dsymutil/BinaryHolder.cpp
  llvm/tools/dsymutil/BinaryHolder.h
  llvm/tools/dsymutil/CMakeLists.txt
  llvm/tools/dsymutil/DwarfLinkerForBinary.cpp
  llvm/tools/dsymutil/DwarfLinkerForBinary.h
  llvm/tools/dsymutil/LinkUtils.h
  llvm/tools/dsymutil/Options.td
  llvm/tools/dsymutil/dsymutil.cpp
  llvm/tools/llvm-dwarfdump/llvm-dwarfdump.cpp
  llvm/unittests/CodeGen/DIEHashTest.cpp



More information about the llvm-commits mailing list