LLVM/project 304cb72 — clang/tools/cir-opt CMakeLists.txt, clang/tools/cir-translate CMakeLists.txt

[CIR][DYNLIB] Make CIR/MLIR related symbols hidden in libclang-cpp.so. (#232409)

It was brought up on a different review that the cost of enabling
ClangIR by default was a significant runtime cost, even without
fclangir. From an instruction count, I found a ~8.5 million instruction
increase caused by the loader having to see all these symbols.

Reducing these gets us down to about a 300k overhead here, which reduces
the time measured on my machine of around 0.11% increase on a file
including std::vector, which feels reasonable. An empty TU overhead
looks to be in the high-1% increase due to the ~300k additional
instructions of loading.

AI disclosure: I used it extensively here, but I think I understand what
is going on, to the best of my ability to understand linking and CMake
(which is minimal :/).
DeltaFile
+7-11clang/tools/cir-translate/CMakeLists.txt
+16-1clang/tools/clang-shlib/simple_version_script.map.in
+5-9clang/tools/cir-opt/CMakeLists.txt
+28-213 files

LLVM/project 19f1235 — libcxx/include/__locale_dir/support openbsd.h

[libcxx] fix missing `__get_locale_encoding()` for OpenBSD (#228306)

Fixes errors like this:


/home/alexrp/Sources/ziglang/zig-llvm23/lib/libcxx/src/text_encoding.cpp:34:43:
error: no member named '__get_locale_encoding' in namespace
        'std::__locale'
34 | return
__make_text_encoding(__locale::__get_locale_encoding(static_cast<__locale::__locale_t>(0)));
| ^~~~~~~~~~~~~~~~~~~~~

/home/alexrp/Sources/ziglang/zig-llvm23/lib/libcxx/src/text_encoding.cpp:48:41:
error: no member named '__get_locale_encoding' in namespace
        'std::__locale'
48 | return __make_text_encoding(__locale::__get_locale_encoding(__l));
        |                                         ^~~~~~~~~~~~~~~~~~~~~
    2 errors generated.
DeltaFile
+7-0libcxx/include/__locale_dir/support/openbsd.h
+7-01 files

LLVM/project baec31b — libc/src/__support/printf_core float_dec_converter_limited.h

[libc][printf] Fix %e/%g formatting in float320 algorithm (#232721)

Commit 509679cf9c9db71, updating arrays of char to a more general CharT,
removed a memset in the float320 code and replaced it with default
zero-initialization of the containing object. But the memset was to
`'0'`, not to `0`, so this changed the output. Restored the correct
initialization, this time using a for loop so that it will work even if
CharT is >1 byte.
DeltaFile
+3-2libc/src/__support/printf_core/float_dec_converter_limited.h
+3-21 files

LLVM/project 304ada3 — llvm/lib/Target/AArch64 AArch64ISelLowering.cpp, llvm/test/CodeGen/AArch64 sve-intrinsics-and-not.ll

[AArch64][llvm] Combine SVE AND-NOT operations into BIC for _m forms

Replace NOT followed by merging AND with BIC for expressions such as:

  return svand_u32_m(pg, a, svnot_u32_x(pg, b));

Combine when NOT is the second operand and its predicate matches the AND
predicate or is all-active.

Use predicated BIC to preserve the AND's first operand in inactive
lanes. Use unpredicated BIC when the AND predicate is all-active.

Do not commute merging AND operands, since this would change inactive
results. Leave pairs with incompatible predicates unchanged.

This applies to all integer element widths. Update the pre-commit LLVM
expectations, including cases where combining would change the
result.
DeltaFile
+12-48llvm/test/CodeGen/AArch64/sve-intrinsics-and-not.ll
+22-10llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+34-582 files

LLVM/project 0d75fac — llvm/lib/Target/AArch64 AArch64ISelLowering.cpp, llvm/test/CodeGen/AArch64 sve-intrinsics-and-not.ll

[AArch64][llvm] Combine SVE AND-NOT operations into BIC for _x forms

Replace NOT followed by AND with BIC for expressions such as:

  return svand_u32_x(svptrue_b32(), a, svnot_u32_x(svptrue_b32(), b));

Combine ordinary AND with NOT when the NOT predicate is all-active or
its inactive values are undefined.

Also combine matching-predicate SVE AND_x-NOT pairs before lowering
discards the AND predicate. AND_x ignores inactive results, so the NOT's
inactive values do not need preserving.

This applies to all integer element widths. Update the pre-commit LLVM
expectations, including cases where combining would change the
result.
DeltaFile
+22-101llvm/test/CodeGen/AArch64/sve-intrinsics-and-not.ll
+34-2llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+56-1032 files

LLVM/project 22cfd3c — llvm/test/CodeGen/AArch64 sve-intrinsics-and-not.ll

[AArch64][llvm] Add pre-commit tests for SVE AND-NOT combining

Add LLVM tests for expressions where NOT followed by AND could
use BIC. Record the existing assembly so the following changes show the
missed optimisations being fixed.

Cover _x and _m AND forms using all-active and runtime predicates. Test
_m forms across all integer element widths. Include NOT with defined
inactive values and reversed AND operands.

Also test cases that must remain as NOT followed by AND because
combining would change the values in inactive lanes.
DeltaFile
+346-0llvm/test/CodeGen/AArch64/sve-intrinsics-and-not.ll
+346-01 files

LLVM/project d71aac3 —

[clang][ThreadSafety] Fix a crash on a capability expression calling a pointer to member (#231995)

`translateCXXMemberCallExpr` looks for calls to `get()` on smart
pointers through `CXXMemberCallExpr::getMethodDecl()`, which returns
null for a call through a pointer to member function, so a capability
expression such as `(g->*g->mu_of)()->Lock()` dereferenced null.

The call then reaches `translateCallExpr`, where its callee, a
pointer-to-member operator, is not translated and became the callee of a
`til::Call`. An `Undefined` compares equal to any other `Undefined`, so
such calls through different objects were taken for one capability, and
nested in a `Call` the `Undefined` escaped
`CapabilityExpr::isInvalid()`, so nothing was reported. Propagate the
`Undefined` as the result of the call instead, which the analysis
reports as "cannot resolve lock expression" like any other unsupported
expression.

Assisted-by: Claude Fable 5.1
DeltaFile
+0-00 files

LLVM/project 58432f9 — llvm/test/Transforms/SLPVectorizer/X86 merge-input-operands.ll

[SLP][X86] Add pre-commit tests for merging bin-op input operands (#210004)

Add baseline SLP vectorizer tests covering the merge-input-operands
transform, including cases that exercise IR flag propagation (fast-math
flags, integer nsw/nuw wrap flags, and the exact flag on shifts) onto
the merged operand node. These checks reflect current (pre-transform)
codegen; a follow-up patch enables the transform and updates the checks
to show the delta.

Co-authored-by: Balakrishna Bandlapalli <bbandlap at gmail.com>
Co-authored-by: Cursor <cursoragent at cursor.com>
DeltaFile
+462-0llvm/test/Transforms/SLPVectorizer/X86/merge-input-operands.ll
+462-01 files

LLVM/project 3416262 — clang/lib/Analysis ThreadSafetyCommon.cpp, clang/test/SemaCXX warn-thread-safety-analysis.cpp

[clang][ThreadSafety] Fix a crash on a capability expression calling a pointer to member (#231995)

`translateCXXMemberCallExpr` looks for calls to `get()` on smart
pointers through `CXXMemberCallExpr::getMethodDecl()`, which returns
null for a call through a pointer to member function, so a capability
expression such as `(g->*g->mu_of)()->Lock()` dereferenced null.

The call then reaches `translateCallExpr`, where its callee, a
pointer-to-member operator, is not translated and became the callee of a
`til::Call`. An `Undefined` compares equal to any other `Undefined`, so
such calls through different objects were taken for one capability, and
nested in a `Call` the `Undefined` escaped
`CapabilityExpr::isInvalid()`, so nothing was reported. Propagate the
`Undefined` as the result of the call instead, which the analysis
reports as "cannot resolve lock expression" like any other unsupported
expression.

Assisted-by: Claude Fable 5.1
DeltaFile
+22-0clang/test/SemaCXX/warn-thread-safety-analysis.cpp
+8-3clang/lib/Analysis/ThreadSafetyCommon.cpp
+30-32 files

LLVM/project 4fa92e8 — clang/test/CodeGen #amdgcnspirv-size-optimization.c#

remove accidentally added file from pr/232710 (#232740)
DeltaFile
+0-0clang/test/CodeGen/#amdgcnspirv-size-optimization.c#
+0-01 files

LLVM/project dfeadc6 — clang/include/clang/Analysis/Analyses ThreadSafetyCommon.h, clang/lib/Analysis ThreadSafetyCommon.cpp

[clang][ThreadSafety] Resolve sibling members of function pointer fields against the called object (#231602)

d1e84bb9ad3b allowed thread safety attributes on function pointer
fields, but an attribute naming a sibling member of the struct was
translated without an implicit object, so for

  struct Dev {
    Mutex mu;
    void (*lock)(void) ACQUIRE(mu);
  };

`dev->lock()` did not acquire `dev->mu`. In C the field was translated
as a bare `mu` that matched no object's `mu`; in C++ the `this->mu` that
Sema builds was substituted with the placeholder `this` of the enclosing
function, so inside a member function of `Dev` a call through another
object was silently taken as a lock of the enclosing object's `mu`.

Use the base of the member access through which the field is called as
the implicit object for the attributes on that field. The member access

    [6 lines not shown]
DeltaFile
+60-0clang/test/SemaCXX/warn-thread-safety-analysis.cpp
+26-10clang/lib/Analysis/ThreadSafetyCommon.cpp
+35-0clang/test/Sema/warn-thread-safety-analysis.c
+0-3clang/include/clang/Analysis/Analyses/ThreadSafetyCommon.h
+121-134 files

FreeBSD/ports cf61166 — x11/xscreensaver distinfo Makefile

x11/xscreensaver: Update 6.16 => 6.17

Changelog:
* Added missing localization strings (largely auto-translated).
* X11: Localizations are being installed again.
* macOS, iOS, Android: Now localized.
* macOS: Possible workarounds for longstanding Apple bugs where the
  legacyScreenSaver process would start using 100% CPU and savers would
  never run again.
* macOS 14.6 or later and iOS 17.6 or later are now required, since
  Xcode 6 can no longer build executables that work on older OSes.
https://www.jwz.org/xscreensaver/changelog.html

PR:             299379
Approved by:    osa, vvd (Mentors, implicit)
DeltaFile
+4-3x11/xscreensaver/Makefile
+7-0x11/xscreensaver/pkg-plist
+3-3x11/xscreensaver/distinfo
+14-63 files

LLVM/project fc53a01 — llvm/lib/Analysis ScalarEvolution.cpp

[ScalarEvolution] Avoid duplicate range computation for singleton steps (#232653)

When the step range contains a single value, its signed minimum and
maximum are equal, so we can skip the second affine range calculation
and reuse the first result. This reduces compile-time instruction counts
by 0.27% for mafft and 0.14% for lencod at O3.
DeltaFile
+10-6llvm/lib/Analysis/ScalarEvolution.cpp
+10-61 files

LLVM/project 7ce728e — llvm/lib/Target/X86 X86ISelLowering.cpp, llvm/test/CodeGen/X86 bfloat.ll

[X86] Keep upper-16-bit f32 extractions in XMM for f16/v8i16

Teach combineBitcast and combineVectorInsert to keep this upper-16-bit
f32 extraction in XMM registers rather than bouncing through a GPR.

Depends on PR: https://github.com/llvm/llvm-project/pull/231112
Follow-up PR:  https://github.com/llvm/llvm-project/pull/230557
DeltaFile
+8-29llvm/test/CodeGen/X86/bfloat.ll
+31-0llvm/lib/Target/X86/X86ISelLowering.cpp
+39-292 files

LLVM/project 74158ed — clang/docs ReleaseNotes.md, clang/lib/AST Expr.cpp

[Clang] Fix crash classifying a dependent call to a non-callable value (#220110)

Clang asserts in Type::castAs<FunctionType> (via
CallExpr::getCallReturnType) when a template argument contains a call
whose callee has already been substituted to a plain value while an
argument is still dependent, e.g.

```cpp
template <auto V> struct W {
  static constexpr auto value = V;
  template <class T> auto f(T) -> W<value(T::value)>;
};
template struct W<42>;
```

When W<42> is instantiated, the callee `value` becomes an int but
T::value is still dependent, so BuildCallExpr creates a dependent
CallExpr (the MayBeFunctionType guard from #139246 intentionally lets
DeclRefExpr callees through so the error is deferred to instantiation).

    [17 lines not shown]
DeltaFile
+39-0clang/test/SemaTemplate/fun-template-def.cpp
+3-0clang/lib/AST/Expr.cpp
+3-0clang/docs/ReleaseNotes.md
+45-03 files

LLVM/project 40dbd0a — llvm/cmake/modules LLVMExternalProjectUtils.cmake

[runtimes] Build clang-scan-deps before configuring external projects (#232714)
DeltaFile
+3-1llvm/cmake/modules/LLVMExternalProjectUtils.cmake
+3-11 files

LLVM/project 99e6f46 — mlir/lib/Dialect/Tosa/IR TosaCanonicalizations.cpp, mlir/test/Dialect/Tosa canonicalize.mlir

[mlir][TOSA] Fix folding of fp casts to bool (#232254)

Fold floating point splat casts to i1 using a nonzero comparison instead
of rounding to an integer.

Add regression test for signed zero and positive and negative fraction
values.
DeltaFile
+28-1mlir/test/Dialect/Tosa/canonicalize.mlir
+3-1mlir/lib/Dialect/Tosa/IR/TosaCanonicalizations.cpp
+31-22 files

LLVM/project 0006480 — llvm/lib/Target/LoongArch LoongArchExpandPseudoInsts.cpp, llvm/test/CodeGen/LoongArch prera-expand-tlsdesc.mir

LoongArch: Mark the $r1 clobber of PseudoDESC_CALL dead

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+29-0llvm/test/CodeGen/LoongArch/prera-expand-tlsdesc.mir
+2-1llvm/lib/Target/LoongArch/LoongArchExpandPseudoInsts.cpp
+31-12 files

OpenBSD/ports V4N8SH6 — math/lean Makefile, math/lean/patches patch-stage0_src_runtime_process_cpp patch-src_runtime_process_cpp

   math/lean: update to 4.35.0

   OK: tb@
VersionDeltaFile
1.5+18,464-824math/lean/pkg/PLIST
1.14+63-24math/lean/Makefile
1.4+29-12math/lean/patches/patch-src_CMakeLists_txt
1.1+32-0math/lean/patches/patch-stage0_src_CMakeLists_txt
1.1+30-0math/lean/patches/patch-stage0_src_runtime_process_cpp
1.1+30-0math/lean/patches/patch-src_runtime_process_cpp
+18,648-86012 files not shown
+18,765-86218 files

LLVM/project bb740ad — llvm/lib/Target/RISCV RISCVExpandPseudoPreRA.cpp, llvm/test/CodeGen/RISCV prera-expand-pseudo.mir

RISCV: Mark unused TLSDESC call defs dead

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+30-0llvm/test/CodeGen/RISCV/prera-expand-pseudo.mir
+2-1llvm/lib/Target/RISCV/RISCVExpandPseudoPreRA.cpp
+32-12 files

OPNSense/core 907829d — src/opnsense/scripts/health/definitions system-mbuf.xml gateway-quality.xml, src/opnsense/www/js opnsense_health.js

health: update y-axis label based on state rather than report metadata
DeltaFile
+9-2src/opnsense/www/js/opnsense_health.js
+2-2src/opnsense/scripts/health/definitions/system-states.xml
+1-1src/opnsense/scripts/health/definitions/system-mbuf.xml
+1-1src/opnsense/scripts/health/definitions/gateway-quality.xml
+13-64 files

LLVM/project 8dcbbcd — llvm/lib/Target/ARM MVETPAndVPTOptimisationsPass.cpp, llvm/test/CodeGen/Thumb2/LowOverheadLoops wls-search-killed.mir count_dominates_start.mir

ARM: Mark the $cpsr clobber dead on merged MVE loop pseudos

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+5-3llvm/lib/Target/ARM/MVETPAndVPTOptimisationsPass.cpp
+3-3llvm/test/CodeGen/Thumb2/LowOverheadLoops/wls-search-pred.mir
+1-1llvm/test/CodeGen/Thumb2/LowOverheadLoops/wls-search-killed.mir
+1-1llvm/test/CodeGen/Thumb2/LowOverheadLoops/count_dominates_start.mir
+10-84 files

OpenBSD/ports LbO67MK — math Makefile

   +math/cadical
VersionDeltaFile
1.235+1-0math/Makefile
+1-01 files

LLVM/project 08735d8 — llvm/lib/Target/SPIRV SPIRVAuxDataHandler.cpp, llvm/test/CodeGen/SPIRV/extensions/SPV_KHR_non_semantic_info preserve-all-function-metadata-debug.ll preserve-auxdata.ll

[SPIRV] Always preserve AuxData on AMD triples (#232068)

#227875 dropped `-spirv-preserve-auxdata` from the HIPAMD driver, but
the flag was still checked in some places within
`SPIRVAuxDataHandler.cpp`. In particular, `emitAuxDataStrings` was
checking it to preserve attributes and metadata for global variables and
functions. Without the flag being passed, some important attributes,
such as `convergent` are lost. This PR makes AMD triples behave as if
the flag was always passed. A complementary change is using
`OpExtInstWithForwardRefsKHR` for records targeting forward refs.
DeltaFile
+30-18llvm/lib/Target/SPIRV/SPIRVAuxDataHandler.cpp
+37-0llvm/test/CodeGen/SPIRV/extensions/SPV_KHR_non_semantic_info/preserve-auxdata-amd-function-attributes.ll
+10-25llvm/test/CodeGen/SPIRV/extensions/SPV_KHR_non_semantic_info/preserve-auxdata-amdgpu-atomic-metadata.ll
+29-4llvm/test/CodeGen/SPIRV/extensions/SPV_KHR_non_semantic_info/preserve-auxdata.ll
+14-6llvm/test/CodeGen/SPIRV/linkage/available-externally-function.ll
+10-9llvm/test/CodeGen/SPIRV/extensions/SPV_KHR_non_semantic_info/preserve-all-function-metadata-debug.ll
+130-625 files not shown
+156-8711 files

OpenBSD/ports PHtTLP8 — math/cadical distinfo Makefile, math/cadical/patches patch-src_mobical_cpp

   math/cadical: new port (version 3.0.1)

   Required as dependency for math/lean update

   OK: tb@

VersionDeltaFile
1.1+33-0math/cadical/Makefile
1.1+19-0math/cadical/patches/patch-src_mobical_cpp
1.1+12-0math/cadical/pkg/DESCR
1.1+4-0math/cadical/pkg/PLIST
1.1+2-0math/cadical/distinfo
1.1.1.1+0-0math/cadical/pkg/PLIST
+70-04 files not shown
+70-010 files

OpenBSD/ports 8A0Lhw4 — archivers Makefile

   +archivers/leangz
VersionDeltaFile
1.151+1-0archivers/Makefile
+1-01 files

OpenBSD/ports gxjS58W — archivers/leangz Makefile crates.inc, archivers/leangz/patches patch-src_lgz_rs patch-src_tar_rs

   archivers/leangz: new port (version 0.1.20)

   Required as build dependency for math/lean update

   OK: tb@

VersionDeltaFile
1.1+142-0archivers/leangz/distinfo
1.1+113-0archivers/leangz/patches/patch-src_tar_rs
1.1+70-0archivers/leangz/crates.inc
1.1+30-0archivers/leangz/patches/patch-src_lgz_rs
1.1+26-0archivers/leangz/Makefile
1.1+2-0archivers/leangz/pkg/PLIST
+383-08 files not shown
+384-014 files

OpenBSD/ports MI0GaR8 — archivers/sevenzipjbinding Makefile

   Add missing WANTLIB from lib inside jar. okay sebastia@
VersionDeltaFile
1.2+3-1archivers/sevenzipjbinding/Makefile
+3-11 files

LLVM/project cd73ea9 — llvm/test/CodeGen/Thumb pr35836.ll, llvm/test/CodeGen/X86 scheduler-backtracking.ll combine-sbb.ll

DeadMachineInstructionElim: Mark unread physreg defs dead

When DeadMachineInstructionElim deletes the only reader of a physreg
def, the def was left live. It already tracks liveness in its backward
walk, so mark non-reserved physreg defs that are not live afterward as
dead.

The newly dead $eflags/CC defs let MachineSink move some flag-setting
arithmetic, which accounts for the codegen changes.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+93-0llvm/test/CodeGen/X86/dead-mi-elimination-dead-physreg-def.mir
+28-40llvm/test/CodeGen/X86/midpoint-int.ll
+12-16llvm/test/CodeGen/Thumb/pr35836.ll
+15-13llvm/test/CodeGen/X86/select-lea.ll
+6-6llvm/test/CodeGen/X86/combine-sbb.ll
+4-5llvm/test/CodeGen/X86/scheduler-backtracking.ll
+158-806 files not shown
+176-9112 files

OPNSense/core d709224 — src/opnsense/mvc/app/views/OPNsense/Diagnostics health.volt, src/opnsense/www/js opnsense_health.js

health: default to logarithmic for some graphs, but make it optional in all cases
DeltaFile
+29-9src/opnsense/www/js/opnsense_health.js
+17-3src/opnsense/mvc/app/views/OPNsense/Diagnostics/health.volt
+46-122 files