editors/mg: Update 20260519 => 20261020
This is an update to OpenBSD 8.0 version.
Changelog:
* word.c: tranpose -> transpose
* echo.c: use strncmp instead of memcmp in complt()
* interpreter.c: fix NULL-deref in parsexp; from Han Boetes
https://cvsweb.openbsd.org/src/usr.bin/mg/
PR: 299837
Approved by: osa, vvd (Mentors, implicit)
[gcov] Add support for -fprofile-abs-path (#230077)
GCC has a -fprofile-abs-path option to use absolute paths to source
files in GCNO files. Citing GCC's documentation:
> Automatically convert relative source file names to absolute path
names in the .gcno files. This allows gcov to find the correct sources
in projects where compilations occur with different working directories.
This is particularly useful when doing unity builds where a generated
source file includes many original source files, as otherwise the GCNO
refers to the original source files by relative paths.
When the -fprofile-abs-path flag is passed to clang/clang++, the new
-coverage-notes-abs-paths flag is passed to cc1, which calls
vfs::FileSystem::makeAbsolute to get the absolute path.
getFilename is moved to a member function in GCOVProfiler so that it can
access the GCOVOptions. This also removes the need for its VFS argument
and the getVirtualFileSystem member function.
[WebKit checkers] Treat NeverDestroyed<T> as immortal (#234867)
Add the support for NeverDestroyed<T> in WebKit, which is an immortal
object. Such an object with non-local storage (e.g. global or static) is
safe as a local variable or call argument.
Co-authored with Claude.
[clang][Sema] Add regression test for invalid friend declaration (#224798)
This adds regression coverage for the friend function declaration path,
which is not covered by
the existing test in `class.friend/p6.cpp`.
Fixes #132614.
net-p2p/go-ethereum: Update 1.17.8 => 1.17.9
Changelog:
* This release enables the Amsterdam fork on the Hoodi testnet at block
timestamp 1793036568 (Mon, 26 Oct 2026 17:42:48 UTC).
* It also contains changes to EVM to improve performance significantly.
* This release is recommended for all users running their nodes on the
Hoodi testnet.
https://github.com/ethereum/go-ethereum/releases/tag/v1.17.9
While here, fix `make test` by using upstream CI script.
PR: 299702
Approved by: Enrique Fynn <me at enriquefynn.com> (maintainer)
Approved by: osa, vvd (Mentors, implicit)
MFH: 2026Q4
(cherry picked from commit 99fc0413c18d18fc6c9750f2265ae9e33811b918)
[clang][C2y] Claim support for WG14 N3842 (#234956)
This requires no updates to the compiler; the paper clarified that
standard headers do not need to be included before you can use the
pragmas. That's behavior Clang has always supported, even if we don't
support all of the pragmas listed in the paper currently.
net-p2p/go-ethereum: Update 1.17.8 => 1.17.9
Changelog:
* This release enables the Amsterdam fork on the Hoodi testnet at block
timestamp 1793036568 (Mon, 26 Oct 2026 17:42:48 UTC).
* It also contains changes to EVM to improve performance significantly.
* This release is recommended for all users running their nodes on the
Hoodi testnet.
https://github.com/ethereum/go-ethereum/releases/tag/v1.17.9
While here, fix `make test` by using upstream CI script.
PR: 299702
Approved by: Enrique Fynn <me at enriquefynn.com> (maintainer)
Approved by: osa, vvd (Mentors, implicit)
MFH: 2026Q4
[clang][C2y] Claim lack of support for WG14 N3787 (#234954)
We don't yet implement the semantics behind the paper, so we still treat
some constructs as being a non-integer constant expression despite use
of constexpr objects.
[libc][cmake] Fold add_integration_test into add_libc_test and clean up test options. (#234712)
- Add `INTEGRATION_TEST` to `LLVM_LIBC_OPTIONAL_ARGS` in
`LibcParseArguments.cmake`.
- Fold `add_integration_test` into `add_libc_test` / `create_libc_test`,
keeping `add_integration_test` as a thin convenience wrapper forwarding
`INTEGRATION_TEST` and `FULL_BUILD_ONLY`.
- Consolidate `_get_hermetic_test_compile_options_impl` and
`_get_hermetic_test_compile_options` into
`_get_common_test_compile_options_impl` and
`_get_common_test_compile_options`, precomputing mode-aware defaults
once at module load time.
- Precompute `LIBC_COMMON_TEST_LINK_OPTIONS` once via
`_get_common_test_link_options_impl` and cleanly separate compile
options from link options across `create_libc_test` and
`_link_libc_hermetic_test`, removing `_link_libc_overlay_test`.
- Explicitly pass `LINK_OPTIONS -mno-wavefrontsize64` and `LINK_OPTIONS
-mwavefrontsize64` alongside `COMPILE_OPTIONS` in
`libc/test/integration/startup/gpu/CMakeLists.txt`.
Assisted-by: Gemini
[OpenMP][offload] Size only reductions that fill the device by their size
A cross-team reduction whose loop is too short for one block per compute
unit now gets the grid of a kernel without a reduction. In SPMD mode,
that is the low-trip-count rule, which lowers the number of threads per
block to spread the iterations over more compute units. Keeping all
threads made such reductions, e.g. one of 1792 iterations, up to 2.5x
slower on MI210.
Claude assisted with this patch.
[OpenMP][offload] Size the grid of cross-team reductions by their size
Every block adds to the cost of combining the partial results of a
cross-team reduction. Launch one block per compute unit for reductions
that work with a reduction data size of more than 32 bytes, and enough
blocks for a per-device number of waves per compute unit (16 on AMDGPU)
for the smaller reduction data sizes, capped by the trip count. Such
kernels keep their number of threads: the low-trip-count reduction of
threads does not apply to them. libomptarget reads the number of compute
units and the platform backend of the device through liboffload, as part
of its geometry properties.
This is an upstream port of the corresponding downstream.
Claude assisted with this patch.
[OpenMP][offload] Trade threads for blocks in Generic-SPMD kernels
The threads of a Generic-SPMD block run the inner parallel loops, whose
trip counts are unknown. Halve the threads down to one warp while the
distribute loop has an iteration for every block, and default to 6
blocks per CU on AMDGPU (LIBOMPTARGET_AMDGPU_GENERIC_SPMD_TEAMS_PER_CU).
libomptarget reads the number of compute units and the platform backend
of the device through liboffload, as part of its geometry properties.
This is an upstream port of the corresponding downstream.
Claude assisted with this patch.
[flang] Register memref-to-llvm patterns in FIRToLLVMLowering (#234305)
With
fir-opt --fir-to-scf --fir-to-memref
mlir-opt --raise-scf-to-affine --affine-raise-from-memref
we can get from FIR to affine and do restructuring in that form.
However, doing
fir-opt --lower-affine
leaves memref ops that
fir-opt --fir-to-llvm-ir
couldn't legalize, as mentioned in
https://discourse.llvm.org/t/flang-affine-linearized-array-access-in-promote-to-affine-causes-false-dependence-and-blocks-loop-tiling/89927/7
This adds the memref-to-llvm patterns to FIRToLLVMLowering to fix that.
Assisted-by: Claude
[CIR] Stop making CIRGen's ExprScalar be a friend of CIRGenFunction (#234951)
Since the former is in an anonymous namespace, this ends "creating" one
of these namespaces per TU. It doesn't actually get created/used
anywhere else, but this did get caught by a newer version of MSVC.
The only thing the friendship did was save us from having to do
getBuilder instead of builder, so this just fixes that.
WebAssembly: Stop adding kill flags on virtual registers
Continue purging new kill flags on virtual registers.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
fixup! [AArch64][llvm] Combine SVE AND-NOT operations into BIC for _m forms
Select merging AND-NOT operations with TableGen patterns instead of the C++ combine. Preserve the first operand in inactive lanes and use an unpredicated BIC when both predicates are all-active.
[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.
fixup! [AArch64][llvm] Combine SVE AND-NOT operations into BIC for _x forms
Check BIC selection for AND_U with poison NOT passthrough and different predicates. Cover the pattern independently of the matching-predicate case.
X86: Stop adding kill flags on virtual registers
Continue purging virtual register uses of kill flags.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
fixup! [AArch64][llvm] Combine SVE AND-NOT operations into BIC for _x forms
Remove the extra AND_U patterns for all-active NOT, ordinary LLVM NOT
and register AND fallback. The C++ helper lowers ordinary cases to
AND and retains matching-predicate AND-NOT pairs for the remaining BIC
pattern.
fixup! [AArch64][llvm] Combine SVE AND-NOT operations into BIC for _x forms
Remove the AND_U pattern for NOT with undefined inactive lanes and an arbitrary predicate. Keep the original fix focused; ordinary cases still lower to AND and use the existing AND-NOT patterns.