[PATCH] D153268: [DWARFLinkerParallel] Add limited functionality to DWARFLinkerParallel.

Alexey Lapshin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 19 05:21:49 PDT 2023


avl created this revision.
avl added reviewers: JDevlieghere, aprantl, dblaikie, clayborg.
Herald added subscribers: ormris, jdoerfert, steven_wu, mgrang, hiraditya, emaste.
Herald added a project: All.
avl requested review of this revision.
Herald added subscribers: llvm-commits, jplehr, sstefan1, MaskRay.
Herald added a reviewer: jdoerfert.
Herald added a project: LLVM.

This patch is extracted from D96035 <https://reviews.llvm.org/D96035>, it adds support for the existing
DWARFLinker functionality. What is not supported yet:

1. Types deduplication(--odr mode).
2. Modules deduplication.
3. Generation of index tables.

run-time performance and memory requirements for clang binary --num-threads 16 :

----------------------------------------------------------------------------------

  |  time, sec   |  mem, GB  |

----------------------------------------------------------------------------------

dsymutil --no-odr --accelerator None --linker llvm    |      44      |   18.0    |
----------------------------------------------------------------------------------

dsymutil --no-odr --accelerator None --linker apple   |     248      |   22.2    |
----------------------------------------------------------------------------------

run-time performance and memory requirements for clang binary --num-threads 1 :

----------------------------------------------------------------------------------

  |  time, sec   |  mem, GB  |

----------------------------------------------------------------------------------

dsymutil --no-odr --accelerator None --linker llvm    |     242      |   17.2    |
----------------------------------------------------------------------------------

dsymutil --no-odr --accelerator None --linker apple   |     260      |   19.4    |
----------------------------------------------------------------------------------


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D153268

Files:
  llvm/include/llvm/CodeGen/DwarfStringPoolEntry.h
  llvm/include/llvm/DWARFLinker/DWARFLinker.h
  llvm/include/llvm/DWARFLinkerParallel/AddressesMap.h
  llvm/include/llvm/DWARFLinkerParallel/DWARFFile.h
  llvm/include/llvm/DWARFLinkerParallel/StringPool.h
  llvm/include/llvm/DWARFLinkerParallel/StringTable.h
  llvm/include/llvm/DebugInfo/DWARF/DWARFDebugMacro.h
  llvm/lib/DWARFLinker/DWARFLinker.cpp
  llvm/lib/DWARFLinker/DWARFLinkerCompileUnit.cpp
  llvm/lib/DWARFLinkerParallel/CMakeLists.txt
  llvm/lib/DWARFLinkerParallel/DIEAttributeCloner.cpp
  llvm/lib/DWARFLinkerParallel/DIEAttributeCloner.h
  llvm/lib/DWARFLinkerParallel/DIEGenerator.h
  llvm/lib/DWARFLinkerParallel/DWARFEmitterImpl.cpp
  llvm/lib/DWARFLinkerParallel/DWARFEmitterImpl.h
  llvm/lib/DWARFLinkerParallel/DWARFFile.cpp
  llvm/lib/DWARFLinkerParallel/DWARFLinkerCompileUnit.cpp
  llvm/lib/DWARFLinkerParallel/DWARFLinkerCompileUnit.h
  llvm/lib/DWARFLinkerParallel/DWARFLinkerGlobalData.h
  llvm/lib/DWARFLinkerParallel/DWARFLinkerImpl.cpp
  llvm/lib/DWARFLinkerParallel/DWARFLinkerImpl.h
  llvm/lib/DWARFLinkerParallel/DWARFLinkerUnit.cpp
  llvm/lib/DWARFLinkerParallel/DWARFLinkerUnit.h
  llvm/lib/DWARFLinkerParallel/DebugLineSectionEmitter.h
  llvm/lib/DWARFLinkerParallel/DependencyTracker.cpp
  llvm/lib/DWARFLinkerParallel/DependencyTracker.h
  llvm/lib/DWARFLinkerParallel/OutputSections.cpp
  llvm/lib/DWARFLinkerParallel/OutputSections.h
  llvm/lib/DWARFLinkerParallel/PatchesList.h
  llvm/lib/DWARFLinkerParallel/StringEntryToDwarfStringPoolEntryMap.h
  llvm/test/tools/dsymutil/ARM/DWARFLinkerParallel/dwarf5-dwarf4-combination-macho.test
  llvm/test/tools/dsymutil/ARM/DWARFLinkerParallel/dwarf5-macho.test
  llvm/test/tools/dsymutil/ARM/DWARFLinkerParallel/fat-dylib-update.test
  llvm/test/tools/dsymutil/ARM/DWARFLinkerParallel/obfuscated.test
  llvm/test/tools/dsymutil/ARM/call-pc-reloc.test
  llvm/test/tools/dsymutil/ARM/dwarf5-addrx-0x0-last.test
  llvm/test/tools/dsymutil/ARM/empty-map.test
  llvm/test/tools/dsymutil/ARM/extern-alias.test
  llvm/test/tools/dsymutil/ARM/fat-arch-name.test
  llvm/test/tools/dsymutil/ARM/fat-arch-not-found.test
  llvm/test/tools/dsymutil/ARM/inlined-low_pc.c
  llvm/test/tools/dsymutil/ARM/preload.test
  llvm/test/tools/dsymutil/ARM/scattered.c
  llvm/test/tools/dsymutil/ARM/thumb.c
  llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/basic-linking-bundle.test
  llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/basic-linking-x86.test
  llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/basic-lto-dw4-linking-x86.test
  llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/basic-lto-linking-x86.test
  llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/basic-with-libfat-test.test
  llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/empty_range.s
  llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/frame-1.test
  llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/frame-2.test
  llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/multiple-inputs.test
  llvm/test/tools/dsymutil/X86/alias.test
  llvm/test/tools/dsymutil/X86/call-site-entry-linking.test
  llvm/test/tools/dsymutil/X86/call-site-entry-reloc.test
  llvm/test/tools/dsymutil/X86/common-sym-multi.test
  llvm/test/tools/dsymutil/X86/common-sym.test
  llvm/test/tools/dsymutil/X86/custom-line-table.test
  llvm/test/tools/dsymutil/X86/darwin-bundle.test
  llvm/test/tools/dsymutil/X86/dead-stripped.cpp
  llvm/test/tools/dsymutil/X86/debug-loc-base-addr.test
  llvm/test/tools/dsymutil/X86/dwarf4-linetable.test
  llvm/test/tools/dsymutil/X86/dwarf5-addrx.test
  llvm/test/tools/dsymutil/X86/dwarf5-call-site-entry-reloc.test
  llvm/test/tools/dsymutil/X86/dwarf5-dw-op-addrx.test
  llvm/test/tools/dsymutil/X86/dwarf5-linetable.test
  llvm/test/tools/dsymutil/X86/dwarf5-loclists.test
  llvm/test/tools/dsymutil/X86/dwarf5-rnglists.test
  llvm/test/tools/dsymutil/X86/eh_frame.test
  llvm/test/tools/dsymutil/X86/empty-CU.test
  llvm/test/tools/dsymutil/X86/fat-archive-input-i386.test
  llvm/test/tools/dsymutil/X86/fat-object-input-x86_64.test
  llvm/test/tools/dsymutil/X86/fat-object-input-x86_64h.test
  llvm/test/tools/dsymutil/X86/generate-empty-CU.test
  llvm/test/tools/dsymutil/X86/global_downgraded_to_static.c
  llvm/test/tools/dsymutil/X86/inlined-static-variable.cpp
  llvm/test/tools/dsymutil/X86/keep-func.test
  llvm/test/tools/dsymutil/X86/label.test
  llvm/test/tools/dsymutil/X86/label2.test
  llvm/test/tools/dsymutil/X86/lc_build_version.test
  llvm/test/tools/dsymutil/X86/location-expression.test
  llvm/test/tools/dsymutil/X86/mismatch.m
  llvm/test/tools/dsymutil/X86/modules-dwarf-version.m
  llvm/test/tools/dsymutil/X86/modules-empty.m
  llvm/test/tools/dsymutil/X86/multiple-inputs.test
  llvm/test/tools/dsymutil/X86/object-prefix-path.test
  llvm/test/tools/dsymutil/X86/op-convert-offset.test
  llvm/test/tools/dsymutil/X86/op-convert.test
  llvm/test/tools/dsymutil/X86/papertrail-warnings.test
  llvm/test/tools/dsymutil/X86/reflection-dump.test
  llvm/test/tools/dsymutil/X86/remarks-linking-archive.text
  llvm/test/tools/dsymutil/X86/remarks-linking-bundle-empty.test
  llvm/test/tools/dsymutil/X86/remarks-linking-bundle.test
  llvm/test/tools/dsymutil/X86/remarks-linking-fat-bundle.test
  llvm/test/tools/dsymutil/X86/reproducer.test
  llvm/test/tools/dsymutil/X86/statistics.test
  llvm/test/tools/dsymutil/X86/swift-ast-x86_64.test
  llvm/test/tools/dsymutil/X86/swift-dwarf-loc.test
  llvm/test/tools/dsymutil/X86/tail-call-linking.test
  llvm/test/tools/dsymutil/X86/thinlto.test
  llvm/test/tools/dsymutil/X86/timestamp-mismatch.test
  llvm/test/tools/dsymutil/X86/tls-variable.test
  llvm/test/tools/dsymutil/X86/union-fwd-decl.test
  llvm/test/tools/dsymutil/X86/verify.test
  llvm/test/tools/llvm-dwarfutil/ELF/X86/DWARFLinkerParallel/gc-default.test
  llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf4-macro-short.test
  llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf4-macro.test
  llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf5-addresses.test
  llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf5-attributes.test
  llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf5-line-str.test
  llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf5-loclists.test
  llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf5-macro-opcodeop.test
  llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf5-macro-short.test
  llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf5-macro.test
  llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf5-rnglists.test
  llvm/test/tools/llvm-dwarfutil/ELF/X86/gc-default.test
  llvm/test/tools/llvm-dwarfutil/ELF/X86/gc-func-overlapping-address-ranges.test
  llvm/test/tools/llvm-dwarfutil/ELF/X86/gc-maxpc.test
  llvm/test/tools/llvm-dwarfutil/ELF/X86/gc-no-garbage.test
  llvm/test/tools/llvm-dwarfutil/ELF/X86/gc-unit-overlapping-address-ranges.test
  llvm/test/tools/llvm-dwarfutil/ELF/X86/verify.test
  llvm/tools/dsymutil/BinaryHolder.cpp
  llvm/tools/dsymutil/BinaryHolder.h
  llvm/tools/dsymutil/DwarfLinkerForBinary.cpp
  llvm/tools/llvm-dwarfutil/DebugInfoLinker.cpp
  llvm/unittests/CodeGen/DwarfStringPoolEntryRefTest.cpp
  llvm/unittests/DWARFLinkerParallel/CMakeLists.txt
  llvm/unittests/DWARFLinkerParallel/StringPoolTest.cpp
  llvm/unittests/DWARFLinkerParallel/StringTableTest.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D153268.532614.patch
Type: text/x-patch
Size: 427408 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230619/4b61dbf4/attachment-0001.bin>


More information about the llvm-commits mailing list