LLVM/project 4c7948dllvm/lib/Transforms/Vectorize VPlanHelpers.h LoopVectorize.cpp

Revert "[VPlan] Re-use VPSlotTracker when printing recipes for costs (NFC)." (#209003)

Reverts llvm/llvm-project#203386.

This causes a large compile-time regression.
DeltaFile
+2-19llvm/lib/Transforms/Vectorize/VPlanHelpers.h
+3-5llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+1-6llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+6-303 files

LLVM/project 4b74cbcllvm/lib/Transforms/Vectorize VPlanHelpers.h LoopVectorize.cpp

Revert "[VPlan] Re-use VPSlotTracker when printing recipes for costs (NFC). (…"

This reverts commit 030fdcef27fe29b5e2c1ef0c6c9df6050b51569a.
DeltaFile
+2-19llvm/lib/Transforms/Vectorize/VPlanHelpers.h
+3-5llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+1-6llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+6-303 files

LLVM/project af812fcclang/lib/Headers riscv_packed_simd.h, clang/test/CodeGen/RISCV rvp-intrinsics.c

[Clang][RISCV][P-ext] Support packed widening convert intrinsics (#208394)

This patch implements all packed widening convert intrinsics using
general vector operations. Low widening conversions use
`__builtin_convertvector`, while high-half conversions use general
shuffles.

The generated code for high-half conversions is correct but not yet
optimal.
DeltaFile
+162-0clang/test/CodeGen/RISCV/rvp-intrinsics.c
+99-0llvm/test/CodeGen/RISCV/rvp-widening-convert.ll
+49-2llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+50-0cross-project-tests/intrinsic-header-tests/riscv_packed_simd.c
+27-0clang/lib/Headers/riscv_packed_simd.h
+387-25 files

LLVM/project 25a5b78llvm/include/llvm/IR PatternMatch.h, llvm/lib/Analysis ValueTracking.cpp

[PatternMatch] Add capturing m_Phi matcher (NFC) (#208949)

Add a new capturing m_Phi matcher and use it in some patterns instead of
manually casting/checking if operand is a phi.

PR: https://github.com/llvm/llvm-project/pull/208949
DeltaFile
+4-11llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+6-8llvm/lib/Transforms/Vectorize/LoopIdiomVectorize.cpp
+2-11llvm/lib/CodeGen/CodeGenPrepare.cpp
+4-4llvm/lib/Target/RISCV/RISCVCodeGenPrepare.cpp
+2-4llvm/lib/Analysis/ValueTracking.cpp
+3-0llvm/include/llvm/IR/PatternMatch.h
+21-386 files

LLVM/project 0b85e1elldb/source/Plugins/Process/Utility InferiorCallPOSIX.cpp

Support Re-export Symbol for FunctionCall

A symbol can be a stub that is re-exported to another library. For
example, ELF can specify an auxiliary library and emit a zero-sized
symbol in the symbol table. This can cause expression evaluation to
resolve the stub instead of the actual function. Fix this by resolving
re-exported symbols to their actual addressed.
DeltaFile
+28-6lldb/source/Plugins/Process/Utility/InferiorCallPOSIX.cpp
+28-61 files

LLVM/project 0f6e6fdlldb/unittests/ObjectFile/ELF TestObjectFileELF.cpp, lldb/unittests/Target ReExportedSymbolTest.cpp CMakeLists.txt

Add unit tests for ELF filter-library symbol handling.

* ObjectFileELFTest.FilterLibraryPlaceholderSymbols: a yaml2obj ELF
  filter library with two DT_AUXILIARY entries checks that
  GetReExportedLibraries() returns the filtees in dynamic-section
  order, that zero-sized exported functions become re-exported symbols
  recording the first filtee and the unversioned name (@VERSION suffix
  stripped), and that nonzero-sized and local definitions are left
  alone.

* ReExportedSymbolTest.ResolveThroughFilteesInOrder: a target holding
  a filter library and two filtee modules checks that
  Symbol::ResolveReExportedSymbol finds a definition in the first
  filtee via the library recorded on the symbol, continues to the next
  filtee in declaration order for symbols the first filtee lacks, and
  that without the containing module only the recorded library is
  searched.

Co-Authored-By: Claude Fable 5 <noreply at anthropic.com>
DeltaFile
+269-0lldb/unittests/Target/ReExportedSymbolTest.cpp
+121-0lldb/unittests/ObjectFile/ELF/TestObjectFileELF.cpp
+1-0lldb/unittests/Target/CMakeLists.txt
+391-03 files

LLVM/project e62c0cbclang/lib/AST/ByteCode Compiler.cpp Pointer.cpp, clang/test/PCH cxx20-template-args.cpp

[clang][bytecode] Fix comparing `TemplateParamObjectDecl`s (#208734)

1) When creating the global variables for them, always use the first
decl
2) When converting null pointers to `APValue`, don't cast the nullptr
base to `Expr` or `ValueDecl`. Use `LValueBase()` instead, so the
internal `PointerUnion` has an all-zeros value as `getOpaqueValue()`. If
we don't do this, we run into problems with merging of
`TemplateParamObjectDecls` because they don't compare equal via
`::Profile()`.
DeltaFile
+5-2clang/lib/AST/ByteCode/Compiler.cpp
+1-1clang/lib/AST/ByteCode/Pointer.cpp
+1-0clang/test/PCH/cxx20-template-args.cpp
+7-33 files

LLVM/project 31ae997lldb/unittests/ObjectFile/ELF TestObjectFileELF.cpp, lldb/unittests/Target ReExportedSymbolTest.cpp CMakeLists.txt

Add unit tests for ELF filter-library symbol handling.

* ObjectFileELFTest.FilterLibraryPlaceholderSymbols: a yaml2obj ELF
  filter library with two DT_AUXILIARY entries checks that
  GetReExportedLibraries() returns the filtees in dynamic-section
  order, that zero-sized exported functions become re-exported symbols
  recording the first filtee and the unversioned name (@VERSION suffix
  stripped), and that nonzero-sized and local definitions are left
  alone.

* ReExportedSymbolTest.ResolveThroughFilteesInOrder: a target holding
  a filter library and two filtee modules checks that
  Symbol::ResolveReExportedSymbol finds a definition in the first
  filtee via the library recorded on the symbol, continues to the next
  filtee in declaration order for symbols the first filtee lacks, and
  that without the containing module only the recorded library is
  searched.

Co-Authored-By: Claude Fable 5 <noreply at anthropic.com>
DeltaFile
+269-0lldb/unittests/Target/ReExportedSymbolTest.cpp
+121-0lldb/unittests/ObjectFile/ELF/TestObjectFileELF.cpp
+1-0lldb/unittests/Target/CMakeLists.txt
+391-03 files

LLVM/project 9c2bb1alldb/include/lldb/Symbol Symbol.h, lldb/source/Plugins/ObjectFile/ELF ObjectFileELF.cpp ObjectFileELF.h

[LLDB] Support Auxiliary library in ELF format

An ELF filter library (DT_FILTER) or auxiliary filter (DT_AUXILIARY)
delegates symbol resolution to its filtee: the dynamic linker looks up
each symbol in the filtee first, falling back to the filter library's
own definition. Filter library may export placeholder smyolbs whose
addresses are not the actual function entry points.

To support this, we teach ObjectFileELF to parse the filtee and model
placeholder function definition in filter libraries as ReExported,
reusing the existing re-export machinery.

Notice that in ELF, we don't record the per-symbol target ReExported
library like Macho. Instead, it is a suggestion list from the libraries
that exposes this symbol. As a result, we need to pass the library
Module to read the suggestion list to correctly parse the file in
Resolver.
DeltaFile
+43-10lldb/source/Symbol/Symbol.cpp
+31-0lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
+11-1lldb/include/lldb/Symbol/Symbol.h
+2-0lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.h
+87-114 files

LLVM/project 2aab895clang/test/CodeGen arm_neon_intrinsics.c cx-complex-range.c, clang/test/CodeGen/AArch64 neon-intrinsics.c

[SROA] Use constant 64-bit indices for Extract/InsertElement (#208918)

The canonical form preferred by instCombine is to use 64-bit values for
constant index in ExtractElement and InsertElement.
DeltaFile
+790-790clang/test/CodeGen/arm_neon_intrinsics.c
+218-218clang/test/CodeGen/cx-complex-range.c
+216-216clang/test/CodeGen/arm-neon-vst.c
+147-147clang/test/CodeGen/AArch64/neon/intrinsics.c
+113-113clang/test/CodeGen/AArch64/neon-intrinsics.c
+104-104llvm/test/Transforms/SROA/vector-promotion.ll
+1,588-1,58822 files not shown
+1,823-1,82528 files

LLVM/project 7215a1allvm/test/Transforms/LoadStoreVectorizer/AMDGPU merge-stores.ll, llvm/test/Transforms/LoadStoreVectorizer/NVPTX load-store-256-bit.ll vectorize_i8.ll

[LoadStoreVectorizer] Use constant 64-bit indices for Extract/InsertElement (#208941)

The canonical form preferred by instCombine is to use 64-bit values for
constant index in ExtractElement and InsertElement.
DeltaFile
+305-304llvm/test/Transforms/LoadStoreVectorizer/NVPTX/load-store-256-bit.ll
+138-138llvm/test/Transforms/LoadStoreVectorizer/NVPTX/vectorize_i8.ll
+80-80llvm/test/Transforms/LoadStoreVectorizer/NVPTX/masked-store.ll
+78-78llvm/test/Transforms/LoadStoreVectorizer/AMDGPU/merge-stores.ll
+50-50llvm/test/Transforms/LoadStoreVectorizer/X86/vectorize-i8-nested-add.ll
+40-40llvm/test/Transforms/LoadStoreVectorizer/NVPTX/gap-fill.ll
+691-69025 files not shown
+932-93331 files

LLVM/project 76f0d46lld/test/ELF aarch64-reloc-pauth.s pack-dyn-relocs-relr-loop.s

[ELF,test] Improve .relr.auth.dyn -> .rela.dyn movement coverage (#208991)

Test two behaviors of #195649 that were unasserted:

- .dynamic shrinks when all .relr.auth.dyn entries are moved to a
  non-empty .rela.dyn. Check the section header size: readelf -d stops
  at the first DT_NULL and cannot show stale padding. This subsumes
  empty-relr.s (a size-neutral tag swap, which passed even without the
  fix), so remove it.
- An empty .rela.dyn is removed when .relr.auth.dyn is unused. Assert
  this in pack-dyn-relocs-relr-loop.s.
DeltaFile
+40-54lld/test/ELF/aarch64-reloc-pauth.s
+2-0lld/test/ELF/pack-dyn-relocs-relr-loop.s
+42-542 files

LLVM/project 359b99cllvm/test/Transforms/SLPVectorizer/RISCV runtime-strided-stores.ll complex-loads.ll, llvm/test/Transforms/SLPVectorizer/SystemZ reductions-fmin-fmax.ll

[SLP] Use constant 64-bit indices for Extract/InsertElement (#208957)

The canonical form preferred by instCombine is to use 64-bit values for
constant index in ExtractElement and InsertElement.
DeltaFile
+82-82llvm/test/Transforms/SLPVectorizer/RISCV/runtime-strided-stores.ll
+60-60llvm/test/Transforms/SLPVectorizer/RISCV/complex-loads.ll
+57-57llvm/test/Transforms/SLPVectorizer/X86/used-reduced-op.ll
+56-56llvm/test/Transforms/SLPVectorizer/SystemZ/reductions-fmin-fmax.ll
+54-54llvm/test/Transforms/SLPVectorizer/X86/pr47629-inseltpoison.ll
+54-54llvm/test/Transforms/SLPVectorizer/X86/pr47629.ll
+363-363454 files not shown
+2,737-2,736460 files

LLVM/project 02a3883lld/ELF LinkerScript.cpp, lld/test/ELF/linkerscript tbss-addr-expr.s

[lld][ELF] Allow explicit address expressions on .tbss output sections (#196447)

D107208 allows consecutive SHF_TLS SHT_NOBITS (.tbss) output sections by
making
each .tbss start at the end address of the previous one
(state->tbssAddr). This
happens unconditionally, so an explicit output section address
(`.tbss ADDR : { ... }`) is silently ignored, unlike GNU ld.

Apply the tbssAddr fallback only when the section has no address
expression.

Some embedded/RTOS applications link the kernel and several mutually
isolated
tasks into a single ELF and require every section, .tbss included, to
sit at a
specific address matching the memory map. Placing a task's .tbss in its
own
protected region is a security boundary: one task must not be able to

    [3 lines not shown]
DeltaFile
+48-0lld/test/ELF/linkerscript/tbss-addr-expr.s
+1-1lld/ELF/LinkerScript.cpp
+49-12 files

LLVM/project 7792961clang/lib/AST/ByteCode EvalEmitter.cpp EvalEmitter.h, clang/utils/TableGen ClangOpcodesEmitter.cpp

[clang][bytecode] Remove EvalEmitter::OpPC (#208988)

We pass this when evaluting opcodes in EvalEmitter, but we never set it
to anything, so the underlying pointer is always null and we later and
up using the source location of the expression we're evaluating.

This seems to only cause problems when Statement expressions are
involved so far.
DeltaFile
+6-5clang/lib/AST/ByteCode/EvalEmitter.cpp
+0-3clang/lib/AST/ByteCode/EvalEmitter.h
+1-1clang/utils/TableGen/ClangOpcodesEmitter.cpp
+7-93 files

LLVM/project 515ea70llvm/lib/Target/WebAssembly WebAssemblyCodeGenPassBuilder.cpp

update

Created using spr 1.3.7
DeltaFile
+1-0llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp
+1-01 files

LLVM/project 6ebf78allvm/lib/Target/WebAssembly WebAssemblyCodeGenPassBuilder.cpp WebAssembly.h

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+234-0llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp
+29-6llvm/lib/Target/WebAssembly/WebAssembly.h
+21-7llvm/lib/Target/WebAssembly/WebAssemblyAddMissingPrototypes.cpp
+20-7llvm/lib/Target/WebAssembly/WebAssemblyFixFunctionBitcasts.cpp
+25-0llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def
+8-7llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
+337-274 files not shown
+359-2910 files

LLVM/project d4df151llvm/lib/Target/WebAssembly WebAssemblyCodeGenPassBuilder.cpp WebAssemblyAddMissingPrototypes.cpp

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+234-0llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp
+21-7llvm/lib/Target/WebAssembly/WebAssemblyAddMissingPrototypes.cpp
+24-0llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def
+20-4llvm/lib/Target/WebAssembly/WebAssembly.h
+9-2llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp
+6-5llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
+314-183 files not shown
+327-189 files

LLVM/project 0b0d79cllvm/lib/Target/WebAssembly WebAssemblyCodeGenPassBuilder.cpp WebAssemblyAddMissingPrototypes.cpp

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+234-0llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp
+21-7llvm/lib/Target/WebAssembly/WebAssemblyAddMissingPrototypes.cpp
+24-0llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def
+20-4llvm/lib/Target/WebAssembly/WebAssembly.h
+9-2llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp
+6-5llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
+314-183 files not shown
+327-189 files

LLVM/project cb1cd2cllvm/lib/Target/WebAssembly WebAssemblyCodeGenPassBuilder.cpp WebAssemblyPassRegistry.def

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+234-0llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp
+18-0llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def
+9-2llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp
+9-2llvm/lib/Target/WebAssembly/WebAssembly.h
+9-0llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.h
+4-3llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
+283-71 files not shown
+286-77 files

LLVM/project 00c280dllvm/lib/Target/WebAssembly WebAssembly.h WebAssemblyISelDAGToDAG.cpp

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+9-2llvm/lib/Target/WebAssembly/WebAssembly.h
+9-2llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp
+2-2llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
+20-63 files

LLVM/project 060df3bllvm/lib/Target/WebAssembly WebAssemblyCodeGenPassBuilder.cpp WebAssemblyPassRegistry.def

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+234-0llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp
+18-0llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def
+9-2llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp
+9-2llvm/lib/Target/WebAssembly/WebAssembly.h
+9-0llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.h
+4-3llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
+283-71 files not shown
+286-77 files

LLVM/project 189764bllvm/lib/Target/WebAssembly WebAssembly.h WebAssemblyISelDAGToDAG.cpp

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+9-2llvm/lib/Target/WebAssembly/WebAssembly.h
+9-2llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp
+2-2llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
+20-63 files

LLVM/project 11191bellvm/lib/Transforms/IPO SampleProfileMatcher.cpp, llvm/test/Transforms/SampleProfile pseudo-probe-stale-profile-lcs-anchor-overwrite.ll

[SampleProfile] Preserve first stale profile CG match

During stale profile LCS matching, the matcher may compare the same IR function against multiple profile candidates. This can happen for overloads that share a demangled basename. The comparison result is useful for the current LCS, but rewriting FuncToProfileNameMap on every successful comparison can replace the profile selected for an IR function with a later candidate.

If another IR function is also matched to that later candidate, both functions can end up using the same stale CFG location map and runStaleProfileMatching asserts that the map is already populated.

Preserve the first selected profile mapping with try_emplace while still caching each pairwise comparison result. Add a regression with a minimal sample profile that used to trigger the assertion.
DeltaFile
+75-0llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-lcs-anchor-overwrite.ll
+7-0llvm/test/Transforms/SampleProfile/Inputs/pseudo-probe-stale-profile-lcs-anchor-overwrite.prof
+1-1llvm/lib/Transforms/IPO/SampleProfileMatcher.cpp
+83-13 files

LLVM/project 9dffcd2lld/ELF Writer.cpp, lld/test/ELF aarch64-reloc-pauth.s

[PAC][lld] Properly handle `.relr.auth.dyn` -> `.rela.dyn` movement (#195649)

Address the following issues reported in #171475:

1. Proper adjustment of `__rela_iplt_end` address if a move from
`.relr.auth.dyn` to `.rela.dyn` took place

2. Set `__rela_iplt_start` properly if prior to such movement from
`.relr.auth.dyn`, the `.rela.dyn` was empty

3. Allocate enough space for both RELA* and AARCH64_AUTH_RELR* tags in
the `.dynamic` section in case we end up with both `.relr.auth.dyn` and
`.rela.dyn`. If one of the sections becomes empty - just pad the
`.dynamic` section with null tags in the end.

Resolves #171475

---------

Co-authored-by: Jessica Clarke <jrtc27 at jrtc27.com>
DeltaFile
+132-8lld/test/ELF/aarch64-reloc-pauth.s
+31-9lld/ELF/Writer.cpp
+163-172 files

LLVM/project e9e21f5llvm/test/CodeGen/X86 buildvec-strided-loads.ll avx512-calling-conv.ll

Revert [X86] EltsFromConsecutiveLoads - handle trunc(wideload()) patterns (#199371) (#208960)

Reverts llvm/llvm-project#199371.

The strided path emits wide loads without checking that the widened
range is dereferenceable. The last wide load reads up to (stride -
element) bytes past the last element and faults when the data ends at a
page boundary. Flagged by @nikic in
https://github.com/llvm/llvm-project/pull/199371#issuecomment-4947406318.

Reproducer on current main **MADE WITH CLAUDE OPUS**

strided.ll, 8 x i16 at a 4 byte stride, the source only touches bytes
[0, 30):
```llvm
define void @strided8i16(ptr %p, ptr %out) {
  %g0 = getelementptr inbounds i8, ptr %p, i64 0
  %g1 = getelementptr inbounds i8, ptr %p, i64 4
  %g2 = getelementptr inbounds i8, ptr %p, i64 8

    [63 lines not shown]
DeltaFile
+0-1,128llvm/test/CodeGen/X86/buildvec-strided-loads.ll
+678-247llvm/test/CodeGen/X86/avx512-calling-conv.ll
+198-88llvm/test/CodeGen/X86/avx512-insert-extract.ll
+194-73llvm/test/CodeGen/X86/avx512-masked_memop-16-8.ll
+164-98llvm/test/CodeGen/X86/vector-compress.ll
+158-100llvm/test/CodeGen/X86/masked_gather_scatter_widen.ll
+1,392-1,7348 files not shown
+2,020-2,03014 files

LLVM/project 3a6048dllvm/lib/Target/ARM ARMAsmPrinter.cpp ARMISelLowering.cpp, llvm/test/CodeGen/ARM weak-hidden-pic.ll elf-preemption.ll

Revert "[ARM] Use .reloc for weak symbols in PIC mode instead of GOT indirection" (#208968)

There is a few breakages between `clang-armv8-quick` failing the
`Interpreter/execute-weak.cpp` test and bots failing linking
`libclang_rt.atomic.so`.

Reverts llvm/llvm-project#208372
DeltaFile
+0-30llvm/lib/Target/ARM/ARMAsmPrinter.cpp
+6-8llvm/test/CodeGen/ARM/weak-hidden-pic.ll
+8-3llvm/lib/Target/ARM/ARMISelLowering.cpp
+4-6llvm/test/CodeGen/ARM/elf-preemption.ll
+9-0llvm/lib/Target/ARM/ARMTargetMachine.h
+2-1llvm/lib/Target/ARM/ARMSubtarget.cpp
+29-481 files not shown
+31-497 files

LLVM/project 61b5d78clang/lib/CIR/CodeGen CIRGenStmt.cpp CIRGenDecl.cpp

[CIR][NFC] Add missing enum values related to CXXExpansionStmt (#208919)

Add missing enum values related to CXXExpansionStmt
DeltaFile
+2-0clang/lib/CIR/CodeGen/CIRGenStmt.cpp
+1-0clang/lib/CIR/CodeGen/CIRGenDecl.cpp
+3-02 files

LLVM/project 074c4b3lld/ELF MarkLive.cpp

[ELF] Replace getThreadIndex with explicit shards in markLive. NFC (#208974)

The parallel mark loop appends deeper discoveries to per-thread queues
indexed by `parallel::getThreadIndex()`, the last getThreadIndex user in
lld. Instead, have each worker claim frontier items off a shared
counter, accumulating into an explicit shard.

The finer-grained item claiming improves load balancing: the markLive
--time-trace phase is ~5% faster for a clang --gc-sections link and ~4%
for a larger chromium one.
DeltaFile
+9-6lld/ELF/MarkLive.cpp
+9-61 files

LLVM/project 10955eallvm/lib/Target/ARM ARMAsmPrinter.cpp ARMISelLowering.cpp, llvm/test/CodeGen/ARM weak-hidden-pic.ll elf-preemption.ll

Revert "[ARM] Use .reloc for weak symbols in PIC mode instead of GOT indirect…"

This reverts commit 290279b6b69138f4162cace4865713efa12ec262.
DeltaFile
+0-30llvm/lib/Target/ARM/ARMAsmPrinter.cpp
+6-8llvm/test/CodeGen/ARM/weak-hidden-pic.ll
+8-3llvm/lib/Target/ARM/ARMISelLowering.cpp
+4-6llvm/test/CodeGen/ARM/elf-preemption.ll
+9-0llvm/lib/Target/ARM/ARMTargetMachine.h
+2-1llvm/lib/Target/ARM/ARMFastISel.cpp
+29-481 files not shown
+31-497 files