[clang][bytecode] Use a SmallPtrSet in collectBlocks() (#218192)
Not sure why I used a SetVector here, but switch it to a SmallPtrSet
(this also gets rid of an additional include when #186045 gets merged).
[MLIR][Python] Don't throw in PyDenseArrayIterator dunderNext (#218193)
`PyDenseArrayIterator::dunderNext` signaled iterator exhaustion by
throwing `nanobind::stop_iteration()`. Raising a C++ exception to signal
`StopIteration` incurs stack-unwinding cost on every loop over a dense
array attribute.
#175377 replaced this pattern with `PyErr_SetNone(PyExc_StopIteration)`
(return a null object after setting the Python error indicator) for the
other iterators in the bindings. `PyDenseArrayIterator` was missed in
that change and still throws. This PR applies the same conversion to
`PyDenseArrayIterator::dunderNext`.
Assisted by: Claude
[FoldingSet] Invalidate iterators on mutation (#218179)
Tighten FoldingSet's iterator contract so that, like DenseMap (#199369)
and StringMap (#202237), mutating the set invalidates iterators obtained
before the call. insert / remove (successful) / clear / move bump the
epoch, so a stale iterator fails under LLVM_ENABLE_ABI_BREAKING_CHECKS.
LLM-aided
Reapply "[llc] Register pass plugin callbacks with the new pass manager" (#217727) (#218163)
Reapplies #217727 (aa8d1afeed37), reverted in #218119 (91b04b4d45d9).
The test hardcoded Clang's spelling of an anonymous namespace in
--print-pipeline-passes output. The pass name comes from getTypeName(),
which scrapes __PRETTY_FUNCTION__; that spells anonymous namespaces as
"(anonymous namespace)" under Clang but "{anonymous}" under GCC. Relax
the FileCheck pattern so it is compiler-agnostic.
[clang][ssaf] Add cpp-bounded-buffers source transformation (#210457)
Adds the first built-in transformation, `cpp-bounded-buffers`, which
rewrites buffers -- raw pointers and arrays -- into bounded types
(`bounded_ptr<T>`, `bounded_array<T, N>`) using the reachability
computed by `UnsafeBufferReachableAnalysis`.
The transformation collects every reachable pointer/array declarator and
function return declared in the translation unit, then either rewrites
it or records a SARIF note explaining why it did not. Shapes that are
not yet handled -- multi-level pointers, pointer to array, references to
pointers, multi-dimensional and unbounded arrays, multi-declarator
groups, macro-spelled declarators, and trailing return types -- are
reported rather than rewritten, and a final pass reports any reachable
entity that was neither rewritten nor otherwise accounted for. Edits are
validated and committed atomically, so a declarator whose edit cannot be
formed (such as a raw array of function pointers) is reported instead of
mangled.
[4 lines not shown]
Make deprecation of ASN1_STRING_data(3) more prominent
The function has been deprecated for a long time: OpenSSL did so when
adding ASN1_STRING_get0_data in 1.1.0. beck removed it from OpenSSL 4.
The reason is that it returns a modifiable "string" and you should not
be modifying an ASN1_STRING this way. You should be using one of the
clumsy, inconvenient accessors.
schwarze merged the deprecation when adding documentation for
ASN1_STRING_get0_data() in 2018. Make this a bit more obvious: move
function to the end of the documented functions in this page, and mark
it deprecated in the SYNOPSIS, too.
I'm aware that deprecation does not work. I was hopeful to be able to
remove the function in the last cycle, but that did not happen and it
might not happen in this cycle either. It will happen at some point,
though.
Prompted by a question by brad
workflows/release-binaries: Install Wix on Windows ARM64 (#217707)
Wix is used for generating the installer and is not installed by default
on Windows ARM64.
[MLIR][Python] Don't throw in PyDenseArrayIterator dunderNext
Signal iterator exhaustion via PyErr_SetNone(PyExc_StopIteration) instead
of throwing nanobind::stop_iteration(), matching the pattern used by the
other iterators in the Python bindings (see #175377). Raising a C++
exception to signal StopIteration incurs stack-unwinding cost on every
loop, which PyDenseArrayIterator was still paying. The return type changes
to nanobind::typed<nanobind::object, EltTy> so the method can return a null
object after setting the Python error indicator.
p5-Variable-Magic: update to 0.65.
0.65 2026-08-20 14:20 UTC
+ Chg : The 'delete' callback for hashes will now correctly be fired in
void context. VMG_COMPAT_HASH_DELETE_NOUVAR_VOID is now always
set to false. This is a (good) side effect of the following fix.
+ Fix : [RT #180372] Test failures under perl v5.45.2
Thanks Lukas Mai for reporting and providing a fix.
+ Upd : AI contributions are not welcomed.