LLVM/project 7a0d80ellvm/lib/Target/RISCV RISCVVLOptimizer.cpp

RISCV: Pass instruction and operand index to getMinimumVLForUser (#219509)
DeltaFile
+12-11llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp
+12-111 files

LLVM/project fdd61f6llvm/lib/CodeGen AtomicExpandPass.cpp

Add dataLayout
DeltaFile
+25-22llvm/lib/CodeGen/AtomicExpandPass.cpp
+25-221 files

LLVM/project 8d9b568clang/lib/Sema SemaOpenMP.cpp

format
DeltaFile
+2-2clang/lib/Sema/SemaOpenMP.cpp
+2-21 files

LLVM/project 9e25ecdclang/lib/StaticAnalyzer/Core ExprEngine.cpp ExprEngineCallAndReturn.cpp

[analyzer] Use makeNode instead of ExplodedGraph::getNode (#218462)

The method `CoreEngine::makeNode` is the canonical way of creating a new
node in the exploded graph and connecting it to its predecessor. Apply
it in two locations that previously duplicated its logic.

Note that `ExplodedGraph::getNode` always returns a non-null
`ExplodedNode *` (that points to either an old node or the freshly
created node); `inlineCall` had no reason to check whether it returns a
nullpointer.

This change is very close to being NFC, but could technically change the
behavior if the state is `PosteriorlyOverconstrained` (which is
vanishingly rare).
DeltaFile
+4-12clang/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp
+3-0clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
+7-122 files

LLVM/project e169020flang/lib/Lower/OpenMP Decomposer.cpp

Better handling of missing version attribute
DeltaFile
+3-1flang/lib/Lower/OpenMP/Decomposer.cpp
+3-11 files

LLVM/project ddafbf6flang/include/flang/Semantics openmp-modifiers.h, flang/lib/Parser openmp-parsers.cpp

Rename getOpenMP to getOpenMPVersion
DeltaFile
+58-58flang/lib/Semantics/check-omp-structure.cpp
+7-7flang/lib/Semantics/resolve-directives.cpp
+6-6flang/lib/Semantics/check-omp-loop.cpp
+8-4flang/lib/Parser/openmp-parsers.cpp
+5-5flang/lib/Semantics/check-omp-variant.cpp
+5-5flang/include/flang/Semantics/openmp-modifiers.h
+89-8513 files not shown
+113-10819 files

LLVM/project 615a9a1flang/lib/Lower ConvertConstant.cpp

Post-merge fixes
DeltaFile
+20-17flang/lib/Lower/ConvertConstant.cpp
+20-171 files

LLVM/project 1767dbcllvm/docs/CommandGuide llvm-debuginfo-analyzer.rst, llvm/test/CodeGen/AMDGPU llvm.amdgcn.fcmp.w32.ll llvm.amdgcn.fcmp.w64.ll

Merge commit '6da7b0a31b893f80bd9a3ed453c40a6f857bee6c' into HEAD
DeltaFile
+2,115-2,484llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+0-2,905llvm/test/CodeGen/AMDGPU/llvm.amdgcn.fcmp.w64.ll
+0-2,456llvm/test/CodeGen/AMDGPU/llvm.amdgcn.fcmp.w32.ll
+2,428-0llvm/test/CodeGen/SPIRV/extensions/SPV_EXT_long_vector/unmerge-crash-0.ll
+2,426-0llvm/test/CodeGen/SPIRV/extensions/SPV_EXT_long_vector/unmerge-crash-1.ll
+0-2,234llvm/docs/CommandGuide/llvm-debuginfo-analyzer.rst
+6,969-10,0792,875 files not shown
+127,486-69,1142,881 files

LLVM/project af2ddf4llvm/include/llvm/ADT SmallVector.h, llvm/unittests/ADT SmallVectorTest.cpp

[ADT] Allow SmallVector move construction without move assignment (#219934)

Move-construct inline elements directly instead of using move assignment.

This avoids requiring element types to be move-assignable, only move-constructible.
Such types at the moment forces us to fall back to std::vector, for no good reason other
than an implementation quirks which is fixed here.

Assisted-by: Codex
DeltaFile
+60-0llvm/unittests/ADT/SmallVectorTest.cpp
+16-2llvm/include/llvm/ADT/SmallVector.h
+76-22 files

LLVM/project 6da7b0allvm/docs/CommandGuide llvm-debuginfo-analyzer.rst, llvm/test/CodeGen/AMDGPU llvm.amdgcn.fcmp.w32.ll llvm.amdgcn.fcmp.w64.ll

Merge commit 'c571eaa128b9bbfbf3d61b9b316ffcb1e42d4144' into HEAD
DeltaFile
+2,115-2,484llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+0-2,905llvm/test/CodeGen/AMDGPU/llvm.amdgcn.fcmp.w64.ll
+0-2,456llvm/test/CodeGen/AMDGPU/llvm.amdgcn.fcmp.w32.ll
+2,428-0llvm/test/CodeGen/SPIRV/extensions/SPV_EXT_long_vector/unmerge-crash-0.ll
+2,426-0llvm/test/CodeGen/SPIRV/extensions/SPV_EXT_long_vector/unmerge-crash-1.ll
+0-2,234llvm/docs/CommandGuide/llvm-debuginfo-analyzer.rst
+6,969-10,0792,875 files not shown
+127,486-69,1142,881 files

LLVM/project c571eaallvm/docs/CommandGuide llvm-debuginfo-analyzer.rst, llvm/test/CodeGen/AMDGPU llvm.amdgcn.fcmp.w32.ll llvm.amdgcn.fcmp.w64.ll

Merge commit 'cd94327a78d314edde554c0e31de125a10174881' into HEAD
DeltaFile
+2,115-2,484llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+0-2,905llvm/test/CodeGen/AMDGPU/llvm.amdgcn.fcmp.w64.ll
+0-2,456llvm/test/CodeGen/AMDGPU/llvm.amdgcn.fcmp.w32.ll
+2,428-0llvm/test/CodeGen/SPIRV/extensions/SPV_EXT_long_vector/unmerge-crash-0.ll
+2,426-0llvm/test/CodeGen/SPIRV/extensions/SPV_EXT_long_vector/unmerge-crash-1.ll
+0-2,234llvm/docs/CommandGuide/llvm-debuginfo-analyzer.rst
+6,969-10,0792,875 files not shown
+127,486-69,1142,881 files

LLVM/project 9c4f804clang/lib/AST/ByteCode InterpFrame.cpp

[clang][bytecode][NFC] Use Func->getDecl() instead of getCallee() (#220230)

We already `assert(Func)` above and use `Func` directly in other places
in this function, so just get the `FunctionDecl` from that instead of
going through the virtual function.
DeltaFile
+1-1clang/lib/AST/ByteCode/InterpFrame.cpp
+1-11 files

LLVM/project 67f9f42flang/include/flang/Optimizer/Analysis TBAAForest.h, flang/include/flang/Optimizer/Dialect FIROpsSupport.h

[fir][AddAliasTags] allow usage of AddAliasTag pass after FirToMemref (#219493)

This is a first patch to improve mixed-dialect support in Flang. The
goal is to allow TBAA tags to be generated before codegen even
after FIRToMemRef or ExternalNameConversion has run.

Concretely:
- Treat non-FIR allocation operations as local allocations under the
  "allocated data" TBAA subtree. They cannot alias Fortran dummy
  arguments. If a conversion pass copied the Fortran variable uniq_name
  onto the new allocation, use that name so the access is distinct from other
  named allocations; otherwise use the unnamed "allocated data" tag.

- Always look for fir.internal_name when building the TBAA tree, not
  only on llvm.func. This removes the assumption that
  ExternalNameConversion has not run before AddAliasTags and
  makes it possible to place the pass later in new pipelines.

Note that this patch is not enough to generate Fortran TBAA tags in LLVM
IR after FIRToMemRef. MemRef will also need to understand the tbaa
attribute and propagate it through its LLVM lowering.
DeltaFile
+106-0flang/test/Transforms/tbaa.fir
+20-10flang/lib/Optimizer/Transforms/AddAliasTags.cpp
+14-9flang/include/flang/Optimizer/Analysis/TBAAForest.h
+6-0flang/include/flang/Optimizer/Dialect/FIROpsSupport.h
+1-1flang/test/Fir/tbaa-codegen2.fir
+147-205 files

LLVM/project 8f59232llvm/docs/CommandGuide llvm-debuginfo-analyzer.md llvm-debuginfo-analyzer.rst, llvm/test/CodeGen/AMDGPU amdgcn.bitcast.512bit.ll calling-conventions.ll

Rebase

Created using spr 1.3.7
DeltaFile
+2,115-2,484llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+0-2,234llvm/docs/CommandGuide/llvm-debuginfo-analyzer.rst
+2,217-0llvm/docs/CommandGuide/llvm-debuginfo-analyzer.md
+611-829llvm/test/CodeGen/AMDGPU/calling-conventions.ll
+567-723llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+953-178llvm/test/Transforms/LoopVectorize/select-last-index-fp.ll
+6,463-6,4481,591 files not shown
+55,080-30,5911,597 files

LLVM/project 2340e62llvm/lib/Transforms/Vectorize LoopVectorize.cpp, llvm/test/Transforms/LoopVectorize multiple-result-intrinsics.ll struct-return-replicate.ll

[VPlan] Don't replicate extractvalues that would require extracting lanes from a struct (#219941)

In the added test cases, we have an extractvalue in a replicate region:

    vector.ph:
      WIDEN-INTRINSIC ir<%sincos> = call llvm.sincos(ir<0.000000e+00>)

    ...

    pred.store.if:
      EMIT vp<%3> = extractelement ir<%sincos>, ir<0>
      CLONE ir<%cos> = extractvalue vp<%3>
      CLONE store ir<%cos>, ir<%cos_dst>

However the operand

a) doesn't generate per lane
b) isn't defined in the same replicate region


    [6 lines not shown]
DeltaFile
+190-0llvm/test/Transforms/LoopVectorize/struct-return-replicate.ll
+51-0llvm/test/Transforms/LoopVectorize/multiple-result-intrinsics.ll
+9-0llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+250-03 files

LLVM/project e47fab5llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/X86 and-neg-pow2-copyable.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+93-29llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+12-21llvm/test/Transforms/SLPVectorizer/X86/and-neg-pow2-copyable.ll
+105-502 files

LLVM/project 98d8c56flang/lib/Utils OpenMP.cpp

[Flang][OpenMP] Fix crash on paths where no optional mangler is provided (#220043)

Currently we will ICE in certain test cases where we run the
DoConcurrentConversion or the privatization pass that invokes
getOrGenImplicitDefaultDeclareMapper with no provided mapper. As we will
still invoke the mapper function without checking it's actually
available. Fix this by verifying we have been provided one first before
usage, the fall back path of using the
getCanonicalDefaultDeclareMapperName results remains the same.
DeltaFile
+2-1flang/lib/Utils/OpenMP.cpp
+2-11 files

LLVM/project f757d4ellvm/lib/Transforms/Vectorize VPlanTransforms.cpp

Switch to SmallVector with space on stack

SmallVector allows for much larger small sizes than SetVector, so use 256 to match InstructionWorklist.
We don't need to worry about duplicate worklist entries until we add users to the worklist.
DeltaFile
+4-4llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+4-41 files

LLVM/project aa82f05llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/AArch64 matmul.ll splat-loads.ll

[SLP]Vectorize unique scalars of splat gather nodes as separate subtrees

A splat gather (the same instruction in every lane) is emitted as an
expensive insertion sequence. When the unique scalars of several splat
gathers form a vectorizable bundle, build them as a separate subtree and
emit the splat gathers as broadcasts of the vectorized value.

Original Pull Request: https://github.com/llvm/llvm-project/pull/218250

Recommit after revert in b80664df122426d703fd8eb0ad7e8e9c2c19bbf3 with
fixed compiler crashes

Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/220250
DeltaFile
+219-43llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+62-161llvm/test/Transforms/SLPVectorizer/X86/splat-gather-operands.ll
+8-24llvm/test/Transforms/SLPVectorizer/AArch64/splat-loads.ll
+9-17llvm/test/Transforms/SLPVectorizer/AArch64/matmul.ll
+9-11llvm/test/Transforms/SLPVectorizer/RISCV/splat-gather-extracts.ll
+4-12llvm/test/Transforms/SLPVectorizer/X86/lookahead.ll
+311-2685 files not shown
+328-29511 files

LLVM/project 2de0c92clang/test/OpenMP amdgpu_throw_trap.cpp, llvm/test/tools/UpdateTestChecks/update_llc_test_checks/Inputs amdgpu_function_name.ll

AMDGPU: Use subarch triples in misc. tests
DeltaFile
+1-1llvm/test/tools/UpdateTestChecks/update_llc_test_checks/Inputs/amdgpu_function_name.ll
+1-1clang/test/OpenMP/amdgpu_throw_trap.cpp
+2-22 files

LLVM/project 014265fclang/test/VFS output-file-permissions.c, llvm/lib/Support VirtualOutputBackends.cpp

[Support][vfs] Remove can_write check when replacing file (#219540)

Remove the can_write check when the file is to be replaced. can_write checks the
permission bits of the file itself, but OnDiskOutputFile::keep() will delete and
replace the file for which the permission bits of the parent directory are the
relevant ones. Keep the check in append mode where the file is actually opened
for writing.

The check causes problems with ccache which removes write permission in
hard_link mode to protect its cache. The file can still be replaced.
DeltaFile
+16-0clang/test/VFS/output-file-permissions.c
+8-4llvm/lib/Support/VirtualOutputBackends.cpp
+24-42 files

LLVM/project 4588e35llvm/test/Transforms/SLPVectorizer splat-gather-subtree-stale-load-entries.ll

[SLP][NFC]Add a test with broadcasted scalars handling, NFC



Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/220246
DeltaFile
+118-0llvm/test/Transforms/SLPVectorizer/splat-gather-subtree-stale-load-entries.ll
+118-01 files

LLVM/project 3c18a4dllvm/lib/Transforms/Vectorize VPlanTransforms.cpp

Address review comments

- Limit to double initial worklist size
- Use VPSingleDefRecipe type
DeltaFile
+11-6llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+11-61 files

LLVM/project ad03738llvm/test/Transforms/SLPVectorizer splat-gather-subtree-stale-load-entries.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+118-0llvm/test/Transforms/SLPVectorizer/splat-gather-subtree-stale-load-entries.ll
+118-01 files

LLVM/project 025dde9llvm/lib/CodeGen/SelectionDAG LegalizeVectorTypes.cpp LegalizeFloatTypes.cpp, llvm/test/CodeGen/X86 ctselect.ll

Merge branch 'users/wizardengineer/ct-select-core' into users/wizardengineer/ct-select-clang
DeltaFile
+0-14llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
+0-6llvm/test/CodeGen/X86/ctselect.ll
+0-6llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
+0-263 files

LLVM/project 38fe089llvm/lib/Target/AMDGPU AMDGPUAsmPrinter.cpp, llvm/test/CodeGen/AMDGPU codegen-no-subarch-warn.ll

AMDGPU: Warn if trying to codegen without a subarch

Warn if using the legacy amdgcn name, or amdgpu without a
specified subarch. This is to push all the non-clang frontends
to update to the new system, but this should turn into an error
in the next release.

Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
DeltaFile
+20-1llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
+16-0llvm/test/CodeGen/AMDGPU/codegen-no-subarch-warn.ll
+36-12 files

LLVM/project 01d70edmlir/lib/Dialect/Shard/IR ShardOps.cpp, mlir/test/Dialect/Shard invalid.mlir

[mlir][shard] Bounds-check the axis attributes in the collective verifiers (#219691)

Fixes #218212.
DeltaFile
+77-0mlir/test/Dialect/Shard/invalid.mlir
+26-8mlir/lib/Dialect/Shard/IR/ShardOps.cpp
+103-82 files

LLVM/project 54b3031lld/ELF/Arch RISCV.cpp, lld/test/ELF riscv-reloc-set32.s

[lld][riscv] Remove integer check for R_RISCV_SET32 (#219143)

If linker relaxation is enabled, the assembler might emit a
R_RISCV_SET[n]/R_RISCV_SUB[n] relocation pair for symbolic differences in
case of debug info relaxation (i.e. when relaxing DWARF CFA).

During relocation, the linker checks if the value for the R_RISCV_SET32
relocation fits a 32-bit signed integer (and a range error is issued if
it does not). If the symbol's absolute address is high enough (e.g. the
text section starts from 0x80000000), this results in a linker error.

R_RISCV_SET32 is also an absolute relocation type, so this check should
be removed.
DeltaFile
+25-0lld/test/ELF/riscv-reloc-set32.s
+2-0lld/ELF/Arch/RISCV.cpp
+27-02 files

LLVM/project 3828042lldb/include/lldb/Core SourceManager.h, lldb/source/Core SourceManager.cpp

[lldb] Guard SourceManager::File's line offsets with a mutex (#219424)

A SourceManager::File is shared by every Target and Process because
Debugger and Process hand out cached instances (see SourceFileCache).

m_offsets is the one member that is computed after the File was
created. CalculateLineOffsets() indexes the file on the first access.
Two threads that read the same source file at the same time therefore
race in the current implementation.

This patch guards m_offsets with a `Guarded` which avoids any potential
races. The shared mutex allows concurrent accesses once the line
offsets were calculated.

assisted-by: claude
DeltaFile
+25-12lldb/source/Core/SourceManager.cpp
+8-1lldb/include/lldb/Core/SourceManager.h
+33-132 files

LLVM/project c5ae884llvm/lib/Target/SPIRV SPIRVNonSemanticDebugHandler.h SPIRVNonSemanticDebugHandler.cpp

[NFC][SPIRV] Converge different DIScope to MCRegister maps into a single one
DeltaFile
+38-49llvm/lib/Target/SPIRV/SPIRVNonSemanticDebugHandler.cpp
+16-31llvm/lib/Target/SPIRV/SPIRVNonSemanticDebugHandler.h
+54-802 files