LLVM/project 2b7ee86llvm/lib/Transforms/Scalar JumpThreading.cpp, llvm/test/Transforms/JumpThreading update-bpi-bfi-unfold-select.ll

[JumpThreading] Don't divide by all-zero branch weights (#221846)

Fixes #192165.
DeltaFile
+19-14llvm/lib/Transforms/Scalar/JumpThreading.cpp
+23-0llvm/test/Transforms/JumpThreading/update-bpi-bfi-unfold-select.ll
+42-142 files

LLVM/project dbdf266llvm/utils profcheck-xfail.txt

Add openmp test to xfail list

Introduced in PR #219323. Looking at the PR, and given we haven't yet addressed openmp profcheck failures, the change is highly unlikely to have introduced a new regression (it's exposing existing ones)
DeltaFile
+1-0llvm/utils/profcheck-xfail.txt
+1-01 files

LLVM/project a6ab49elibcxx/docs/Status Cxx23Issues.csv Cxx20Papers.csv

[libc++][docs] Preserve tight inline spacing
DeltaFile
+21-21libcxx/docs/Status/Cxx20Issues.csv
+15-15libcxx/docs/Status/Cxx17Issues.csv
+4-4libcxx/docs/Status/Cxx26Issues.csv
+4-4libcxx/docs/Status/Cxx17Papers.csv
+1-1libcxx/docs/Status/Cxx23Issues.csv
+1-1libcxx/docs/Status/Cxx20Papers.csv
+46-466 files

LLVM/project 2e6c7bcllvm/lib/Transforms/IPO OpenMPOpt.cpp, llvm/test/Transforms/OpenMP indirect_call_specialization_cap.ll

[OpenMPOpt] Bound indirect-call specialization instead of paying for all of it (#219323)

`registerAAsForFunction()` seeds `AAIndirectCallInfo` unconditionally,
so device
code pays for specializing every indirect call site. Device code routes
many
calls through function-pointer tables and virtual dispatch, so a call
site can
see every address-taken candidate in the module, and the if-cascade
`AAIndirectCallInfo` builds over them is quadratic.

Skip specialization at a call site with more than three possible
callees,
overridable with `-openmp-opt-max-callees-for-specialization`. The bound
is a
threshold on the call site rather than a limit on how many callees get
specialized: the Attributor asks about each callee with the same total,
so a
site above the threshold keeps its indirect call instead of getting

    [29 lines not shown]
DeltaFile
+157-0llvm/test/Transforms/OpenMP/indirect_call_specialization_cap.ll
+25-0llvm/lib/Transforms/IPO/OpenMPOpt.cpp
+182-02 files

LLVM/project d031640orc-rt/lib/bedrock CMakeLists.txt, orc-rt/lib/support CMakeLists.txt

[orc-rt] Hide symbols by default in Bedrock and Support libs. (#221848)

Hides C/C++ symbols by default in the orc-rt Bedrock and Support
libraries. Only explicitly annotated APIs should be exposed by these
libraries.
DeltaFile
+5-1orc-rt/lib/support/CMakeLists.txt
+5-1orc-rt/lib/bedrock/CMakeLists.txt
+10-22 files

LLVM/project 08b4a75utils/bazel/llvm-project-overlay/mlir BUILD.bazel

[Bazel] Fixes 89fe023 (#221823)

This fixes 89fe023484bd5b897dccefd290fe5e8536db47b0 (#221813).

Buildkite error link:
https://buildkite.com/llvm-project/upstream-bazel/builds?commit=89fe023484bd5b897dccefd290fe5e8536db47b0

Co-authored-by: Google Bazel Bot <google-bazel-bot at google.com>
DeltaFile
+28-2utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
+28-21 files

LLVM/project cc9a701clang/unittests/Analysis LifetimeSafetyTest.cpp

[LifetimeSafety][test] Fix UUM of fields added in #221610 and #205764 (#221843)

New LifetimeSafetyOpts fields were added in
https://github.com/llvm/llvm-project/pull/221610 but they are not
initialized in clang/unittests/Analysis/LifetimeSafetyTest.cpp, leading
to use-of-uninitialized-memory
(https://lab.llvm.org/buildbot/#/builders/164/builds/25165):
```
WARNING: MemorySanitizer: use-of-uninitialized-value
    #0 0x555571559cbc in clang::lifetimes::internal::(anonymous namespace)::LifetimeChecker::LifetimeChecker(clang::lifetimes::internal::LoanPropagationAnalysis const&, clang::lifetimes::internal::MovedLoansAnalysis const&, clang::lifetimes::internal::LiveOriginsAnalysis const&, clang::lifetimes::internal::FactManager&, clang::AnalysisDeclContext&, clang::lifetimes::LifetimeSafetySemaHelper*, clang::lifetimes::LifetimeSafetyOpts const&) /home/b/sanitizer-x86_64-linux-bootstrap-msan/build/llvm-project/clang/lib/Analysis/LifetimeSafety/Checker.cpp:108:9
    #1 0x5555715453cd in clang::lifetimes::internal::runLifetimeChecker(clang::lifetimes::internal::LoanPropagationAnalysis const&, clang::lifetimes::internal::MovedLoansAnalysis const&, clang::lifetimes::internal::LiveOriginsAnalysis const&, clang::lifetimes::internal::FactManager&, clang::AnalysisDeclContext&, clang::lifetimes::LifetimeSafetySemaHelper*, clang::lifetimes::LifetimeSafetyOpts const&) /home/b/sanitizer-x86_64-linux-bootstrap-msan/build/llvm-project/clang/lib/Analysis/LifetimeSafety/Checker.cpp:575:19
    #2 0x555571524c1e in clang::lifetimes::internal::LifetimeSafetyAnalysis::run() /home/b/sanitizer-x86_64-linux-bootstrap-msan/build/llvm-project/clang/lib/Analysis/LifetimeSafety/LifetimeSafety.cpp:98:3
    #3 0x55555c3da25b in LifetimeTestRunner /home/b/sanitizer-x86_64-linux-bootstrap-msan/build/llvm-project/clang/unittests/Analysis/LifetimeSafetyTest.cpp:71:15
...
  Uninitialized value was stored to memory at
    #0 0x55555bcd06c7 in __msan_memcpy /home/b/sanitizer-x86_64-linux-bootstrap-msan/build/llvm-project/compiler-rt/lib/msan/msan_interceptors.cpp:1760:3
    #1 0x5555715238ed in clang::lifetimes::internal::LifetimeSafetyAnalysis::LifetimeSafetyAnalysis(clang::AnalysisDeclContext&, clang::lifetimes::LifetimeSafetySemaHelper*, clang::lifetimes::LifetimeSafetyOpts const&) /home/b/sanitizer-x86_64-linux-bootstrap-msan/build/llvm-project/clang/lib/Analysis/LifetimeSafety/LifetimeSafety.cpp:54:39
    #2 0x55555c3da1b9 in make_unique<clang::lifetimes::internal::LifetimeSafetyAnalysis, clang::AnalysisDeclContext &, std::nullptr_t, clang::lifetimes::LifetimeSafetyOpts &, 0> /home/b/sanitizer-x86_64-linux-bootstrap-msan/build/libcxx_install_msan_track_origins/include/c++/v1/__memory/unique_ptr.h:713:30
    #3 0x55555c3da1b9 in LifetimeTestRunner /home/b/sanitizer-x86_64-linux-bootstrap-msan/build/llvm-project/clang/unittests/Analysis/LifetimeSafetyTest.cpp:70:9

    [9 lines not shown]
DeltaFile
+5-0clang/unittests/Analysis/LifetimeSafetyTest.cpp
+5-01 files

LLVM/project 5f9d139mlir/lib/Dialect/Tosa/IR TosaOps.cpp, mlir/test/Dialect/Tosa verifier.mlir

[mlir][Tosa] Handle empty block-scaled reshape shapes (#220872)
DeltaFile
+8-6mlir/lib/Dialect/Tosa/IR/TosaOps.cpp
+9-0mlir/test/Dialect/Tosa/verifier.mlir
+17-62 files

LLVM/project 95760fbmlir/include/mlir/Dialect/LLVMIR NVVMRequiresSMTraits.h, mlir/lib/Dialect/LLVMIR/IR NVVMDialect.cpp

[mlir][NVVM] Reject malformed target chip names (#220873)

Parse the complete sm_<version>[a|f] grammar before using the SM
version. This prevents a failed integer conversion from leaving the
version uninitialized and also rejects overflowing encodings.

Found by Coverity.

Assisted-by: Codex
DeltaFile
+24-8mlir/include/mlir/Dialect/LLVMIR/NVVMRequiresSMTraits.h
+8-3mlir/lib/Dialect/LLVMIR/IR/NVVMDialect.cpp
+8-0mlir/test/Dialect/LLVMIR/nvvm-target-invalid.mlir
+40-113 files

LLVM/project 415d9c6mlir/tools/mlir-tblgen OpFormatGen.h OpFormatGen.cpp

[mlir][ODS] Remove unconditional properties query (NFC) (#221844)

All operations emit a Properties struct, including operations without
explicit properties. Remove the stale hasProperties query and fold its
unreachable property-less paths from the operation, adaptor, and format
generators.

Found by Coverity.

Assisted-by: Codex
DeltaFile
+80-309mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp
+34-73mlir/tools/mlir-tblgen/OpFormatGen.cpp
+1-2mlir/tools/mlir-tblgen/OpFormatGen.h
+115-3843 files

LLVM/project bea94ballvm/lib/Target/AMDGPU SIFoldOperands.cpp, llvm/test/CodeGen/AMDGPU true16-fold.mir

[AMDGPU][True16][CodeGen] Do not fold hi16 SGPR copy (#220858)

Dropping the subreg on a hi16 copy would read the low half instead
DeltaFile
+18-0llvm/test/CodeGen/AMDGPU/true16-fold.mir
+3-1llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
+21-12 files

LLVM/project 3069964clang CMakeLists.txt, llvm CMakeLists.txt

[CIR][CMake] Configure MLIR as a dependency-only project

ClangIR requires MLIR, but enabling CIR currently requires users to list MLIR
explicitly in LLVM_ENABLE_PROJECTS. That also attaches all MLIR build, install,
unit-test, and lit targets to the corresponding LLVM aggregates.

When Clang is selected and CLANG_ENABLE_CIR is enabled, append MLIR to the
effective LLVM_ENABLE_PROJECTS list. The common project setup compares that
list with the cached user selection, so an explicit MLIR selection retains its
normal behavior while an implicit selection is configured with EXCLUDE_FROM_ALL.

This makes MLIR targets available for CIR dependency resolution without adding
MLIR's aggregate targets. Keep the existing standalone ClangIR restriction and
do not configure MLIR when CIR is disabled.

Validation:
- Configured Clang with CIR and implicit MLIR test support.
- Configured Clang and MLIR explicitly with CIR and tests enabled.
- Configured Clang without CIR and verified that MLIR remains disabled.

    [4 lines not shown]
DeltaFile
+6-0llvm/CMakeLists.txt
+2-2clang/CMakeLists.txt
+8-22 files

LLVM/project 4ab2198clang CMakeLists.txt, llvm CMakeLists.txt

[CMake] Infer dependency-only projects from the cache

LLVM_ENABLE_PROJECTS historically treats projects enabled to satisfy another
project's dependency the same as projects selected by the user. Consequently,
implicit projects attach their complete build, install, and test suites to
LLVM's aggregate targets.

Keep the cache entry as the user-requested project roots and use the normal
LLVM_ENABLE_PROJECTS variable as the effective dependency closure. Projects in
the effective list but not the cache entry are configured with EXCLUDE_FROM_ALL.
Normalize the special all value before comparing the two sets.

This makes Flang's MLIR and Clang dependencies dependency-only without a second
project collection. It also applies the same rule to Clang when it is added for
LLDB. Forward the cached roots to cross-compilation and bootstrap configurations
so implicit projects do not become explicit in nested builds.

Let MLIR own its dependency-only test policy: configure test support libraries
for downstream consumers without creating MLIR unit tests or registering its

    [10 lines not shown]
DeltaFile
+19-7mlir/CMakeLists.txt
+18-4llvm/CMakeLists.txt
+12-2llvm/cmake/modules/AddLLVM.cmake
+4-1clang/CMakeLists.txt
+1-1llvm/cmake/modules/CrossCompile.cmake
+54-155 files

LLVM/project f7ce52fllvm/lib/Target/AMDGPU SIISelLowering.cpp, llvm/test/CodeGen/AMDGPU fdot2.ll

[AMDGPU] Fix FDOT2 fold for non-constant lane indices (#217646)

The fold only checked that the two lane index nodes were not the same
SDValue, but distinct nodes can still be equal at runtime, silently
picking the wrong lanes

Require both indices to be constant and distinct
DeltaFile
+48-0llvm/test/CodeGen/AMDGPU/fdot2.ll
+4-2llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+52-22 files

LLVM/project a2ce10cllvm/lib/Transforms/Scalar ConstraintElimination.cpp, llvm/test/Transforms/ConstraintElimination induction-nowrap-from-scev-not-ir.ll monotonic-int-phis-wrapping.ll

[ConstraintElim] Use range-based NUW/NSW inferrence for Add. (#221487)

Factor out logic to strengthen NUW/NSW flags based on know no-wrap
regions and also use it for ADD.

This enables a number of additional folds in real-world workloads:
https://github.com/dtcxzyw/llvm-opt-benchmark-nightly/pull/1215

Compile-time impact in the noise for geomean. Per workload there are a
few improvements and one regression `lencod` (stage1-ReleaseThinLTO)
https://llvm-compile-time-tracker.com/compare.php?from=bb577f620571ce3bb97f2e717b53500574a9cf27&to=6de758abcfa6fb6e9de359b1fb5cfb67b689afe5&stat=instructions:u

PR: https://github.com/llvm/llvm-project/pull/221487
DeltaFile
+269-0llvm/test/Transforms/ConstraintElimination/add-nsw.ll
+40-25llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+7-8llvm/test/Transforms/ConstraintElimination/wrapping-math.ll
+7-7llvm/test/Transforms/ConstraintElimination/monotonic-int-phis-decrement.ll
+4-6llvm/test/Transforms/ConstraintElimination/monotonic-int-phis-wrapping.ll
+3-3llvm/test/Transforms/ConstraintElimination/induction-nowrap-from-scev-not-ir.ll
+330-498 files not shown
+345-6414 files

LLVM/project 249c1calldb/include/lldb/Target Target.h, lldb/source/API SBValue.cpp

[lldb] Use DIL in CreateValueFromExpression
DeltaFile
+51-0lldb/test/API/commands/frame/var-dil/expr/CreateValueFromExpression/TestCreateValueFromExpression.py
+42-5lldb/source/API/SBValue.cpp
+22-0lldb/source/Target/Target.cpp
+7-0lldb/test/API/commands/frame/var-dil/expr/CreateValueFromExpression/main.cpp
+4-0lldb/include/lldb/Target/Target.h
+3-0lldb/test/API/commands/frame/var-dil/expr/CreateValueFromExpression/Makefile
+129-51 files not shown
+132-57 files

LLVM/project bcaa897libcxx/docs TestingLibcxx.md FeatureTestMacroTable.md, libcxx/docs/Helpers Styles.md

[libc++][docs] Finish native MyST cleanup
DeltaFile
+282-560libcxx/docs/FeatureTestMacroTable.md
+70-79libcxx/docs/TestingLibcxx.md
+20-51libcxx/utils/generate_feature_test_macro_components.py
+18-0libcxx/docs/Helpers/Styles.md
+0-9libcxx/docs/Status/Cxx29.md
+0-9libcxx/docs/Status/Cxx26.md
+390-7083 files not shown
+390-7359 files

LLVM/project c02ea09offload/liboffload exports, offload/liboffload/src OffloadImpl.cpp

[offload][omp] Route RPC callback registration through liboffload

Replace __tgt_register_rpc_callback's direct iteration over plugins
with olIteratePlatforms + olPlatformRegisterRPCCallback, and drop the
now-unused RPCServerTy::registerCallback export. Move the
initialized/has-devices guard that used to live in libomptarget into
olPlatformRegisterRPCCallback_impl.
DeltaFile
+7-3offload/libomptarget/interface.cpp
+4-0offload/liboffload/src/OffloadImpl.cpp
+0-1offload/liboffload/exports
+11-43 files

LLVM/project 45930cemlir/lib/Tools/PDLL/CodeGen MLIRGen.cpp, mlir/lib/Tools/PDLL/Parser Parser.cpp

[mlir][PDLL] Reject overflowing unregistered result indices (#221834)

Unregistered operation result access accepts numeric member names, but
code generation emits a nonnegative I32 attribute. Reject values outside
the signed 32-bit range before building the AST and use the matching
type in codegen.

Found by Coverity.

Assisted-by: Codex
DeltaFile
+7-2mlir/lib/Tools/PDLL/Parser/Parser.cpp
+8-0mlir/test/mlir-pdll/Parser/expr-failure.pdll
+4-2mlir/lib/Tools/PDLL/CodeGen/MLIRGen.cpp
+19-43 files

LLVM/project 5b4a54amlir/lib/Dialect/LLVMIR/IR LLVMDialect.cpp

[mlir][LLVM] Remove dead constant verifier return (NFC) (#221833)

Every arm of the constant attribute-kind chain returns directly, leaving
the final success return unreachable. Remove the dead statement.

Found by Coverity.

Assisted-by: Codex
DeltaFile
+0-2mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
+0-21 files

LLVM/project d80842foffload/include device.h, offload/liboffload exports

[offload][omp] Query device info directly through liboffload

Route DeviceTy::getInfo through olGetDeviceInfo instead of the
plugin's obtain_device_info, and drop the now-unused
GenericPluginTy::obtain_device_info wrapper and its liboffload
export.
DeltaFile
+4-9offload/include/device.h
+0-10offload/plugins-nextgen/common/src/PluginInterface.cpp
+0-3offload/plugins-nextgen/common/include/PluginInterface.h
+0-1offload/liboffload/exports
+4-234 files

LLVM/project 36b179dclang/docs ReleaseNotes.md, clang/lib/Sema SemaDecl.cpp

[clang][Sema] Crash due to asm labeled incomplete global register decls (#219746)

CheckAsmLabel fails to check for an incomplete type before attempting to
get the type layout. Short circuit on an incomplete type as Sema will
already reject a global with an incomplete type.
DeltaFile
+9-0clang/test/Sema/global-explicit-register-undefined-type.c
+2-0clang/lib/Sema/SemaDecl.cpp
+1-0clang/docs/ReleaseNotes.md
+12-03 files

LLVM/project 1ac82cclibcxx/docs/Status Cxx20Papers.csv Cxx26Papers.csv

[libc++][docs] Finish MyST migration
DeltaFile
+337-337libcxx/docs/Status/Cxx26Issues.csv
+307-307libcxx/docs/Status/Cxx17Issues.csv
+300-300libcxx/docs/Status/Cxx23Issues.csv
+292-292libcxx/docs/Status/Cxx20Issues.csv
+208-208libcxx/docs/Status/Cxx26Papers.csv
+193-193libcxx/docs/Status/Cxx20Papers.csv
+1,637-1,63736 files not shown
+2,472-2,45842 files

LLVM/project db63585libcxx/docs TestingLibcxx.rst TestingLibcxx.md, libcxx/docs/DesignDocs AtomicDesign.rst AtomicDesign.md

[libc++] Rename documentation files to Markdown
DeltaFile
+0-797libcxx/docs/DesignDocs/AtomicDesign.rst
+797-0libcxx/docs/DesignDocs/AtomicDesign.md
+0-676libcxx/docs/VendorDocumentation.rst
+676-0libcxx/docs/VendorDocumentation.md
+0-591libcxx/docs/TestingLibcxx.rst
+591-0libcxx/docs/TestingLibcxx.md
+2,064-2,06486 files not shown
+8,058-8,05892 files

LLVM/project 611dd15libcxx/docs Modules.md UserDocumentation.md, libcxx/docs/DesignDocs FileTimeType.md AtomicDesign.md

[libc++][docs] Convert documentation with rst2myst
DeltaFile
+608-614libcxx/docs/DesignDocs/AtomicDesign.md
+384-405libcxx/docs/VendorDocumentation.md
+271-292libcxx/docs/DesignDocs/FileTimeType.md
+255-280libcxx/docs/TestingLibcxx.md
+220-221libcxx/docs/UserDocumentation.md
+210-208libcxx/docs/Modules.md
+1,948-2,02038 files not shown
+3,831-4,11244 files

LLVM/project 2f2f4d8clang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/Dialect/IR CIRMemorySlot.cpp

Extend PromotableRegionOpInterface for TernaryOp and add extra test coverage
DeltaFile
+116-2clang/test/CIR/Transforms/mem2reg-regions.cir
+35-3clang/lib/CIR/Dialect/IR/CIRMemorySlot.cpp
+25-0clang/test/CIR/Transforms/mem2reg-regions.c
+1-0clang/include/clang/CIR/Dialect/IR/CIROps.td
+177-54 files

LLVM/project 008169dclang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/Dialect/IR CIRMemorySlot.cpp

[CIR] Implement PromotableRegionOpInterface for cir.scope

Same treatment as cir.if: a slot read inside a cir.scope no longer needs
the CFG flattened before mem2reg can promote it. The scope region is
entered directly from before the operation, so it sees the reaching
definition unchanged.

cir.scope yields at most one value and may already be using it for the
scope's own result, so regions that store to the slot are refused.

Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>
DeltaFile
+57-0clang/test/CIR/Transforms/mem2reg-regions.cir
+24-0clang/lib/CIR/Dialect/IR/CIRMemorySlot.cpp
+1-0clang/include/clang/CIR/Dialect/IR/CIROps.td
+82-03 files

LLVM/project df7481cclang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/Dialect/IR CIRMemorySlot.cpp

[CIR] Implement PromotableRegionOpInterface for cir.if

mem2reg gives up on a memory slot as soon as one of its uses lives in a
nested region whose parent op does not implement
PromotableRegionOpInterface. Since no CIR op implements it, promoting a
slot read inside a cir.if required running cir-flatten-cfg first, which
is why clang/test/CIR/Transforms/mem2reg.cir has to flatten before it can
promote anything.

Implement the interface for cir.if. Both regions are entered directly
from before the operation, so both see the same reaching definition.

A definition created inside a region has to leave the operation through
one of its results, and cir.if has none, so isRegionPromotable refuses
regions that store to the slot. Supporting those requires giving cir.if
results and is left for later.

Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>
DeltaFile
+72-0clang/test/CIR/Transforms/mem2reg-regions.cir
+28-0clang/lib/CIR/Dialect/IR/CIRMemorySlot.cpp
+1-0clang/include/clang/CIR/Dialect/IR/CIROps.td
+101-03 files

LLVM/project a17b7e9clang/test/CIR/CodeGen ms-declspec-noalias.c

[CIR] Reject willreturn on __declspec(noalias) attribute groups

Classic codegen never adds willreturn for NoAliasAttr. Bracket the
definition and call-site groups so a wildcard cannot hide it.
DeltaFile
+23-4clang/test/CIR/CodeGen/ms-declspec-noalias.c
+23-41 files

LLVM/project 35385c7offload/liboffload exports, offload/libompaccsupport device.cpp

[offload][omp] Implement printDeviceInfo through liboffload
DeltaFile
+181-2offload/libompaccsupport/device.cpp
+0-19offload/plugins-nextgen/common/src/PluginInterface.cpp
+0-6offload/plugins-nextgen/common/include/PluginInterface.h
+0-1offload/liboffload/exports
+181-284 files