LLVM/project cb0e2d3libc/test/shared shared_math_test.cpp

nit
DeltaFile
+2-2libc/test/shared/shared_math_test.cpp
+2-21 files

LLVM/project c65f246clang-tools-extra/clang-tidy/performance InefficientAlgorithmCheck.cpp, clang-tools-extra/docs ReleaseNotes.md

[clang-tidy] Fix invalid suggestion in `performance-inefficient-algorithm` (#217458)

`hasArgument` matches the argument after `IgnoreParenImpCasts()`, so for
`#define VALUE (1)` the check bound the `1` inside the parentheses. That
range covers only part of the macro expansion, so `Lexer::getSourceText`
returned an empty string and the suggested fix came out as `s.find()`.

Read the source text from the argument as written instead, and emit no
fix when there is still no text for it.

Fixes https://github.com/llvm/llvm-project/issues/217457
DeltaFile
+38-0clang-tools-extra/test/clang-tidy/checkers/performance/inefficient-algorithm.cpp
+14-11clang-tools-extra/clang-tidy/performance/InefficientAlgorithmCheck.cpp
+7-0clang-tools-extra/docs/ReleaseNotes.md
+59-113 files

LLVM/project bc0c028clang/include/clang/Driver CommonArgs.h, clang/include/clang/Options Options.td

[Flang][Driver] Add support for option -f[no-]split-machine-functions in flang (#216637)

Added support for the `-fsplit-machine-functions` flag in the
Flang driver.

- The Flang driver forwards `-fsplit-machine-functions` to `-fc1` and
the negative flag `-fno-split-machine-functions` is used at the driver
level only.
- Flang `-fc1` driver sets `TargetOptions.EnableMachineFunctionSplitter`,
which causes LLVM's MachineFunctionSplitterPass to be added to the
codegen pipeline
DeltaFile
+17-0clang/lib/Driver/ToolChains/CommonArgs.cpp
+14-0flang/test/Driver/fsplit-machine-functions.f90
+1-11clang/lib/Driver/ToolChains/Clang.cpp
+12-0flang/test/Driver/split-machine-function-pass.f90
+5-0clang/include/clang/Driver/CommonArgs.h
+2-2clang/include/clang/Options/Options.td
+51-134 files not shown
+60-1310 files

LLVM/project 0d15a07clang/lib/CodeGen CGOpenMPRuntime.cpp, llvm/include/llvm/Frontend/OpenMP OMPIRBuilder.h

[llvm][OpenMP] Use vector for number of threads and teams
DeltaFile
+13-7llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
+11-8llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+6-3clang/lib/CodeGen/CGOpenMPRuntime.cpp
+4-4mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+4-4llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
+38-265 files

LLVM/project 9610d9cclang/test/OpenMP target_teams_codegen.cpp, llvm/include/llvm/Frontend/OpenMP OMPIRBuilder.h

[offload] Split strictness for threads and blocks (#211400)

This commit splits the strictness for the number of threads and blocks. This will be needed to support `dims` modifier in OpenMP 6.1.
DeltaFile
+13-9offload/plugins-nextgen/common/src/PluginInterface.cpp
+9-4llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+6-6clang/test/OpenMP/target_teams_codegen.cpp
+5-4offload/include/Shared/APITypes.h
+5-3offload/plugins-nextgen/common/include/PluginInterface.h
+5-3llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
+43-295 files not shown
+53-3611 files

LLVM/project b245794libc/shared/math fminimum_magf128.h, libc/src/__support/math fminimum_magf128.h

fminimum_magf128
DeltaFile
+4-7libc/src/__support/math/fminimum_magf128.h
+5-5libc/test/shared/shared_math_constexpr_test.cpp
+4-4libc/test/shared/shared_math_test.cpp
+0-6libc/shared/math/fminimum_magf128.h
+5-1libc/src/math/generic/fminimum_magf128.cpp
+5-0libc/test/src/math/smoke/fminimum_magf128_test.cpp
+23-2320 files not shown
+51-3426 files

LLVM/project af620aflibc/shared/math fmaximum_magf128.h, libc/src/__support/math fmaximum_magf128.h

fmaximum_magf128
DeltaFile
+4-7libc/src/__support/math/fmaximum_magf128.h
+0-6libc/shared/math/fmaximum_magf128.h
+3-3libc/test/shared/shared_math_constexpr_test.cpp
+5-1libc/src/math/generic/fmaximum_magf128.cpp
+5-0libc/test/src/math/smoke/fmaximum_magf128_test.cpp
+5-0libc/src/math/fmaximum_magf128.h
+22-1720 files not shown
+47-3026 files

LLVM/project ab44d0bflang/include/flang/Semantics semantics.h, flang/lib/Lower PFTBuilder.cpp

[flang] Do not branch to a FORMAT statement from an assigned GO TO

Label analysis already classifies which labeled statements may be named by
a statement that branches.  Record the positions of those statements in the
semantics context and consult it when lowering records the targets of an
assigned GO TO, so that a FORMAT statement is not given a target block.

A GO TO whose variable holds only a format label now reaches the run-time
error instead of branching into the FORMAT statement.

The label analysis is built once and shared: AnalyzeLabels() runs the
constraint checks first and records the branch targets only if they pass,
since a program with fatal errors is not lowered.

Co-Authored-By: Claude Opus 5 (1M context) <noreply at anthropic.com>
DeltaFile
+75-0flang/test/Lower/assigned-goto-format-target.f90
+24-4flang/lib/Semantics/resolve-labels.cpp
+17-2flang/lib/Lower/PFTBuilder.cpp
+14-0flang/include/flang/Semantics/semantics.h
+4-2flang/lib/Semantics/resolve-labels.h
+6-0flang/test/Semantics/assign07.f90
+140-81 files not shown
+141-97 files

LLVM/project 20444f7llvm/unittests/CodeGen/GlobalISel CMakeLists.txt, llvm/utils/gn/secondary/llvm/unittests/CodeGen/GlobalISel BUILD.gn

[GISel] Fix link error when dylib is enabled (#217516)

This is to fix link error caused by e21cfc08414e.
DeltaFile
+1-0llvm/utils/gn/secondary/llvm/unittests/CodeGen/GlobalISel/BUILD.gn
+1-0llvm/unittests/CodeGen/GlobalISel/CMakeLists.txt
+2-02 files

LLVM/project 6ac7a9fflang/include/flang/Lower PFTBuilder.h, flang/lib/Lower Bridge.cpp PFTBuilder.cpp

[flang][PFT-to-MLIR] Do not wrap the DO of an OpenMP loop construct (#216280)

A DO attached to an OpenMP loop directive is driven directly into the
loop op by OpenMPLoopConstruct lowering, so folding it into an
scf.execute_region hides the iteration from that op and crashes lowering
when the loop body is unstructured.

Extend the wrappability check with isOmpLoopBody(), the OpenMP analogue
of the existing isAccLoopBody(): the immediate body DO, or one of the N
associated iterator DOs under collapse(N) / ordered(N), is not
wrappable. The shared parts of both checks -- collecting the enclosing
DO chain, evaluating a clause's loop count, and the depth test -- are
factored into helpers.

Co-authored-by: Claude

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply at anthropic.com>
DeltaFile
+123-62flang/lib/Lower/PFTBuilder.cpp
+111-0flang/test/Lower/OpenMP/wsloop-unstructured-cycle.f90
+6-3flang/lib/Lower/Bridge.cpp
+4-2flang/include/flang/Lower/PFTBuilder.h
+244-674 files

LLVM/project 93ac788llvm/lib/Transforms/Vectorize VectorCombine.cpp, llvm/test/Transforms/VectorCombine deinterleave-interleave-pairs.ll

[VectorCombine] Fold deinterleave/interleave pairs (#211022)

Fold matched `vector.deinterleaveN` / `vector.interleaveN` pairs through
equivalent elementwise operation chains.

When every deinterleaved field is transformed by the same elementwise
chain, rebuild that chain at the original vector width and remove the
deinterleave/interleave pair.

This eliminates redundant shuffle-like operations and enables improved
SVE code generation on AArch64 targets.

---------

Co-authored-by: Benjamin Maxwell <benjamin.maxwell at arm.com>
DeltaFile
+717-0llvm/test/Transforms/VectorCombine/deinterleave-interleave-pairs.ll
+234-0llvm/lib/Transforms/Vectorize/VectorCombine.cpp
+951-02 files

LLVM/project 014b3edclang/lib/Sema SemaChecking.cpp, clang/test/AST/ByteCode builtin-functions.cpp

[clang][Sema] Do lvalue-to-rvalue conversion on isfpclass Mask arg (#216929)

Fixes https://github.com/llvm/llvm-project/issues/216294
DeltaFile
+20-0clang/test/AST/ByteCode/builtin-functions.cpp
+8-1clang/lib/Sema/SemaChecking.cpp
+28-12 files

LLVM/project 0d30fcbcompiler-rt/lib/asan asan_mapping.h asan_shadow_setup.cpp

[ASan][Darwin] Support gapless shadow layout for iOS 27.0

When the shadow can be placed entirely above app memory (as on the
new iOS 27.0 embedded VM layout, where debug memory pushes shadow
past kHighMemEnd), there is no need to split shadow into low/high
halves with a middle gap.

- Add kGaplessShadow (Apple-only) to detect this configuration.
- Teach InitializeShadowMemory to reserve one contiguous shadow
  region and protect only the shadow-of-shadow when kGaplessShadow
  is true, with CHECKs asserting the mapping preconditions.
- Update PrintAddressSpaceLayout to print the single-region layout.

rdar://167657399
DeltaFile
+41-35compiler-rt/lib/asan/asan_rtl.cpp
+39-1compiler-rt/lib/asan/asan_shadow_setup.cpp
+9-0compiler-rt/lib/asan/asan_mapping.h
+89-363 files

LLVM/project 2661b4bcompiler-rt/test/asan/TestCases/Darwin sandbox-vm-region-recurse.cpp

Fixup macos sandbox test
DeltaFile
+1-1compiler-rt/test/asan/TestCases/Darwin/sandbox-vm-region-recurse.cpp
+1-11 files

LLVM/project 82aaae7compiler-rt/lib/sanitizer_common sanitizer_win.cpp

fix: FindAvailableMemoryRange on windows
DeltaFile
+15-15compiler-rt/lib/sanitizer_common/sanitizer_win.cpp
+15-151 files

LLVM/project c850dcaflang/include/flang/Optimizer/Builder/Runtime Assign.h, flang/lib/Optimizer/Builder/Runtime Assign.cpp

[flang] - Call _FortranAAssignSimple instead of _FortranAAssign for intrinsic-type array assignments.

This patch adds support for calling _FortranAAssignSimple, a faster-path for array assignments.
`_FortranAAssignSimple` is called when ALL the following conditions are true:
1. Intrinsic element type (not derived type)
2. Matching ranks (no scalar-to-array broadcasting)
3. Non-volatile
4. Not polymorphic
5. Not explicit-length character
6. Not temporary LHS

Otherwise, uses `_FortranAAssign` (or specialized variants like `_FortranAAssignPolymorphic`, `_FortranAAssignExplicitLengthCharacter`).

This is a (perhaps final) part of the fix for https://github.com/llvm/llvm-project/issues/203915
DeltaFile
+287-0flang/test/HLFIR/assign-simple-routing.fir
+46-4flang/lib/Optimizer/HLFIR/Transforms/ConvertToFIR.cpp
+19-13flang/lib/Optimizer/OpenMP/LowerWorkdistribute.cpp
+13-0flang/lib/Optimizer/Builder/Runtime/Assign.cpp
+12-0flang/include/flang/Optimizer/Builder/Runtime/Assign.h
+2-2flang/test/HLFIR/assign-codegen.fir
+379-192 files not shown
+381-218 files

LLVM/project c0dba49.github/workflows release-documentation.yml

Add back environment
DeltaFile
+3-0.github/workflows/release-documentation.yml
+3-01 files

LLVM/project 88a7adeflang-rt/lib/runtime assign.cpp, flang-rt/unittests/Runtime Assign.cpp

Reject CHARACTER types in AssignSimple and add death tests

AssignSimple is only intended for trivial intrinsic types (integer, real,
complex, logical). Add a guard that crashes on CHARACTER type input,
matching the existing derived-type guard.

Add death tests covering all five crash paths in AssignSimple: rank
mismatch, element-bytes mismatch, derived type, character type, and
non-allocatable element count mismatch.

Co-Authored-By: Claude Opus 4 (1M context) <noreply at anthropic.com>
DeltaFile
+77-0flang-rt/unittests/Runtime/Assign.cpp
+3-0flang-rt/lib/runtime/assign.cpp
+80-02 files

LLVM/project b932e50clang/docs ClangFormatStyleOptions.rst ClangFormatStyleOptions.md, clang/include/clang/Basic AttrDocs.td

Merge remote-tracking branch 'origin/main' into HEAD
DeltaFile
+13,767-6,856llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-sve-instructions.s
+6,347-3,146llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-neon-instructions.s
+4,432-4,282clang/include/clang/Basic/AttrDocs.td
+8,235-0clang/docs/ClangFormatStyleOptions.md
+0-8,043clang/docs/ClangFormatStyleOptions.rst
+3,815-3,810llvm/test/CodeGen/AMDGPU/flat-atomicrmw-fmin.ll
+36,596-26,1378,808 files not shown
+499,139-279,9398,814 files

LLVM/project bcf0093llvm/lib/ExecutionEngine/Orc ReOptimizeLayer.cpp COFFVCRuntimeSupport.cpp, llvm/lib/ExecutionEngine/Orc/Debugging PerfSupportPlugin.cpp

[ORC] Move simple lookupAndRecordAddrs uses to lookupAndApply (#217509)

Mechanical conversions in ReOptimizeLayer, PerfSupportPlugin,
COFFVCRuntimeSupport and COFFPlatform::bootstrapCOFFRuntime: each (name,
ExecutorAddr *) pair becomes a recordAddr.

NFCI.
DeltaFile
+13-16llvm/lib/ExecutionEngine/Orc/COFFPlatform.cpp
+8-10llvm/lib/ExecutionEngine/Orc/COFFVCRuntimeSupport.cpp
+5-7llvm/lib/ExecutionEngine/Orc/Debugging/PerfSupportPlugin.cpp
+5-6llvm/lib/ExecutionEngine/Orc/ReOptimizeLayer.cpp
+31-394 files

LLVM/project a160d90.github/workflows commit-access-review.yml

workflows/commit-access-review: Limit token to current repository (#216880)

The token had access to all llvm repositories which was unnecessary
since it was only used for llvm-project.

https://github.com/llvm/llvm-project/security/code-scanning/1860
DeltaFile
+1-0.github/workflows/commit-access-review.yml
+1-01 files

LLVM/project 25a993cclang/docs ReleaseNotes.md, clang/lib/Sema SemaDeclCXX.cpp

[clang][Sema] Warn on explicit conversion functions in C++20 with -Wc++98-compat (#217342)

The explicit(bool) patch (76b9027f352a) added a
`!getLangOpts().CPlusPlus20` guard here, so this `-Wc++98-compat`
warning stopped firing in C++20 and later. C++11 through C++17 still
warn, and the test even has a FIXME asking for the warning in C++20.

Drop the guard so every mode behaves the same, update the test, and
remove the FIXME.

Fixes #161689
DeltaFile
+1-2clang/test/SemaCXX/cxx98-compat.cpp
+3-0clang/docs/ReleaseNotes.md
+1-1clang/lib/Sema/SemaDeclCXX.cpp
+5-33 files

LLVM/project 01da06dllvm/lib/Target/RISCV RISCVISelLowering.cpp, llvm/test/CodeGen/RISCV/rvv fixed-vectors-strided-load-combine.ll

[RISCV] Fix incorrect stride computation in concat_vectors-of-loads combine (#217401)

performCONCAT_VECTORSCombine's computed the stride between two loads as
BIO2.getOffset() - BIO1.getOffset(), but getOffset() only returns each
load's own trailing offset component, not the base-to-base displacement.
For loads based on two distinct fixed FrameIndex objects (e.g. an
illegal, non-power-of-2 vector argument scalarized into per-element
stack slots), this always computed 0 regardless of the true distance
between the slots, since equalBaseIndex computes the correct relative
offset separately and returns it via an out-parameter that was being
discarded.

Use the 3 argument equalBaseIndex overload and its computed offset
instead.

Fixes #217369.

Assisted-by: Claude
DeltaFile
+350-0llvm/test/CodeGen/RISCV/rvv/fixed-vectors-strided-load-combine.ll
+3-2llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+353-22 files

LLVM/project c4e2411clang/include/clang/StaticAnalyzer/Core/PathSensitive SMTConstraintManager.h, clang/test/Analysis/z3 z3-constraint-liveness.c

[analyzer][z3] Fix SMTConstraintManager.h removeDeadBindings (#215240)

removeDeadBindings did not properly keep track of constraint
dependencies, causing still-in-use constraints to be incorrectly
removed.

This PR stops constraints that are indirectly related to a live symbol
from being removed by removeDeadBindings.

Assisted-by: Codex
DeltaFile
+37-5clang/include/clang/StaticAnalyzer/Core/PathSensitive/SMTConstraintManager.h
+13-0clang/test/Analysis/z3/z3-constraint-liveness.c
+50-52 files

LLVM/project e5b8a7clld/ELF Relocations.cpp, lld/test/ELF aarch64-gnu-ifunc-nonpreemptible-pauth.s

[PAC][ELF] Make non-preemptible IFUNC GOT assertion an error and extend (#214456)

Support for R_AARCH64_AUTH_IRELATIVE is not yet present in LLD, but we
accept various input that would give rise to needing it. For the direct
reloc case, replaceWithDefined asserts (rather than give an error
message) this was not requested, whilst for the non-direct reloc case it
silently ignores which GOT type was requested. In the latter case, and
the former when assertions are disabled, this results in mis-linking the
object, producing one with a non-AUTH GOT entry, that would presumably
then fail the AUTDA operation in any user of it (aside from the IPLT
entry generated by LLD).

Fixes: 417d2d7ce694 ("[PAC][lld][AArch64][ELF] Support signed GOT
(#113815)")
DeltaFile
+21-0lld/test/ELF/aarch64-gnu-ifunc-nonpreemptible-pauth.s
+9-4lld/ELF/Relocations.cpp
+30-42 files

LLVM/project 9344320libc/src/__support/OSUtil/linux/syscall_wrappers execve.h, libc/src/unistd execle.h

[libc] Implement `execle` (#217213)

This implements `execle` and also creates a syscall wrapper for `execve`.
DeltaFile
+61-0libc/test/integration/src/unistd/execle_test.cpp
+55-0libc/src/unistd/linux/execle.cpp
+44-0libc/src/__support/OSUtil/linux/syscall_wrappers/execve.h
+35-6libc/test/integration/src/unistd/CMakeLists.txt
+29-0libc/test/integration/src/unistd/execle_test_normal_exit.cpp
+25-0libc/src/unistd/execle.h
+249-611 files not shown
+318-2017 files

LLVM/project d0e8f5fllvm/lib/Passes CMakeLists.txt, llvm/utils/gn/secondary/llvm/lib/Passes BUILD.gn

[CMake] Add AsmPrinter link dependency to LLVMPasses (#217524)

After #216468
DeltaFile
+1-0llvm/utils/gn/secondary/llvm/lib/Passes/BUILD.gn
+1-0llvm/lib/Passes/CMakeLists.txt
+2-02 files

LLVM/project 050470ellvm/include/llvm/Passes CodeGenPassBuilder.h, llvm/lib/Passes CodeGenPassBuilder.cpp

[CodeGen] Replace CodeGenPassBuilder CRTP with virtual hooks (#216468)

Make the hooks that were dispatched through derived() virtual, drop both
template parameters, and outline the pipeline into
lib/Passes/CodeGenPassBuilder.cpp, mirroring TargetPassConfig. The pass
headers move out of CodeGenPassBuilder.h.

The outlined bodies are moved verbatim, apart from dropping
now-redundant
std::move on returned Errors.

MSP430CodeGenPassBuilder.cpp.o .text: 84685 -> 11240 (-87%); compile
time: 1.75s -> 0.64s. llc .text: -293824 bytes; .data.rel.ro: +2784 (the
9 new vtables). The vtable slots are link-time constants in the default
non-PIE llc; with -pie they become 333 relative relocations, which RELR
packs into 40 bytes.

Overriding is now compiler-checked, which surfaced
AMDGPUCodeGenPassBuilder::addPreEmitRegAlloc (not a hook, never defined

    [6 lines not shown]
DeltaFile
+77-998llvm/include/llvm/Passes/CodeGenPassBuilder.h
+928-1llvm/lib/Passes/CodeGenPassBuilder.cpp
+65-56llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
+40-37llvm/lib/Target/X86/X86CodeGenPassBuilder.cpp
+37-34llvm/lib/Target/NVPTX/NVPTXCodeGenPassBuilder.cpp
+34-32llvm/lib/Target/RISCV/RISCVCodeGenPassBuilder.cpp
+1,181-1,15811 files not shown
+1,290-1,25817 files

LLVM/project a84425bclang/include/clang/Basic DiagnosticSemaKinds.td, clang/lib/Sema SemaRISCV.cpp

[Clang][RISC-V] Warn on duplicate interrupt attribute types (#217358)

The RISC-V interrupt attribute previously accepted the same type more
than once. This commit emits a warning instead (since a duplicate is
almost certainly a mistake).

The warning is emitted at most once per attribute and is controlled by
the new `-Wduplicate-interrupt-type` flag.

Follow up of #216159
DeltaFile
+8-24clang/test/Sema/riscv-interrupt-attr-qci.c
+6-13clang/test/Sema/riscv-interrupt-attr-sifive.c
+4-12clang/test/Sema/riscv-interrupt-attr-rnmi.c
+6-5clang/test/Sema/riscv-interrupt-attr.c
+6-1clang/lib/Sema/SemaRISCV.cpp
+3-0clang/include/clang/Basic/DiagnosticSemaKinds.td
+33-551 files not shown
+36-557 files

LLVM/project b1c24eallvm/lib/Target/Mips MipsSEISelLowering.cpp, llvm/test/CodeGen/Mips/msa buildvector-undef-loop.ll

[Mips] Legalize vector UNDEF instead of expanding to zero BUILD_VECTOR (#211503)

Currently, MIPS MSA expands ISD::UNDEF into a BUILD_VECTOR of all zeros
during legalization. This creates an infinite loop in DAGCombiner when
the following occurs:
1.Mips lower BUILD_VECTOR expands non-splat vectors into
INSERT_VECTOR_ELT with creating undef node
2.Then legalization expands UNDEF back to BUILD_VECTOR zero 
3.Mips lower BUILD_VECTOR converts zero vector to BITCAST 
4.DAGCombiner optimizes BITCAST(zero) to UNDEF
5.Back to step 2, infinite loop

Fix #210229.
DeltaFile
+37-0llvm/test/CodeGen/Mips/msa/buildvector-undef-loop.ll
+1-0llvm/lib/Target/Mips/MipsSEISelLowering.cpp
+38-02 files