[CIR] Implement array delete for destructed types (#186248)
This extends the cir.delete_array lowering code to introduce a loop that
calls destructors when the array being deleted represents a destructed
type. The lowering introduces the destructors by way of a cir.array.dtor
operation, which is further expanded during LoweringPrepare. This also
required updating the cir.array.dtor operation to accept a raw pointer
to the element type and a value representing the number of elements to
be destructed.
This does not yet handle the possibility of destructors throwing
exceptions.
devel/gcc-arm-embedded: fix build with clang 21
With clang 21 devel/gcc-arm-embedded fails to build, with errors similar
to:
/wrkdirs/usr/ports/devel/gcc-arm-embedded/work-default/src/binutils-gdb/binutils/readelf.c:23278:37: error: pointer comparison always evaluates to false [-Werror,-Wtautological-compare]
23278 | || inote.namedata + inote.namesz < inote.namedata)
| ^
and later many instances of:
In file included from <built-in>:1:
In file included from /wrkdirs/usr/ports/devel/gcc-arm-embedded/work-default/src/binutils-gdb--gdb/gdb/defs.h:63:
/wrkdirs/usr/ports/devel/gcc-arm-embedded/work-default/src/binutils-gdb--gdb/gdb/../gdbsupport/enum-flags.h:97:34: error: non-type
template argument is not a constant expression
97 | integer_for_size<sizeof (T), static_cast<bool>(T (-1) < T (0))>::type
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/wrkdirs/usr/ports/devel/gcc-arm-embedded/work-default/src/binutils-gdb--gdb/gdb/../gdbsupport/enum-flags.h:134:20: note: in
instantiation of template class 'enum_underlying_type<ui_out_flag>' requested here
[27 lines not shown]
devel/gcc-arm-embedded: fix build with clang 21
With clang 21 devel/gcc-arm-embedded fails to build, with errors similar
to:
/wrkdirs/usr/ports/devel/gcc-arm-embedded/work-default/src/binutils-gdb/binutils/readelf.c:23278:37: error: pointer comparison always evaluates to false [-Werror,-Wtautological-compare]
23278 | || inote.namedata + inote.namesz < inote.namedata)
| ^
and later many instances of:
In file included from <built-in>:1:
In file included from /wrkdirs/usr/ports/devel/gcc-arm-embedded/work-default/src/binutils-gdb--gdb/gdb/defs.h:63:
/wrkdirs/usr/ports/devel/gcc-arm-embedded/work-default/src/binutils-gdb--gdb/gdb/../gdbsupport/enum-flags.h:97:34: error: non-type
template argument is not a constant expression
97 | integer_for_size<sizeof (T), static_cast<bool>(T (-1) < T (0))>::type
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/wrkdirs/usr/ports/devel/gcc-arm-embedded/work-default/src/binutils-gdb--gdb/gdb/../gdbsupport/enum-flags.h:134:20: note: in
instantiation of template class 'enum_underlying_type<ui_out_flag>' requested here
[25 lines not shown]
devel/gcc-arm-embedded: fix build with clang 21
With clang 21 devel/gcc-arm-embedded fails to build, with errors similar
to:
/wrkdirs/usr/ports/devel/gcc-arm-embedded/work-default/src/binutils-gdb/binutils/readelf.c:23278:37: error: pointer comparison always evaluates to false [-Werror,-Wtautological-compare]
23278 | || inote.namedata + inote.namesz < inote.namedata)
| ^
and later many instances of:
In file included from <built-in>:1:
In file included from /wrkdirs/usr/ports/devel/gcc-arm-embedded/work-default/src/binutils-gdb--gdb/gdb/defs.h:63:
/wrkdirs/usr/ports/devel/gcc-arm-embedded/work-default/src/binutils-gdb--gdb/gdb/../gdbsupport/enum-flags.h:97:34: error: non-type
template argument is not a constant expression
97 | integer_for_size<sizeof (T), static_cast<bool>(T (-1) < T (0))>::type
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/wrkdirs/usr/ports/devel/gcc-arm-embedded/work-default/src/binutils-gdb--gdb/gdb/../gdbsupport/enum-flags.h:134:20: note: in
instantiation of template class 'enum_underlying_type<ui_out_flag>' requested here
[25 lines not shown]
Preserve PR state across failover device transition
Set pr_dump_dir on the dev_disk handler before tearing down HA sessions
so the kernel dumps PR state at unregister time. After the replacement
vdisk_blockio devices are created, restore the saved state and swap the
LUNs in without generating a device-replacement UA.
[clang-tidy] Correctly handle attributes in readability-inconsistent-ifelse-braces (#184095)
Improved the check to correctly handle `[[likely]]` and `[[unlikely]]`
attributes placed between the if/else keyword and the opening brace.
As of AI Usage: Gemini 3 is used for pre-commit reviewing.
Closes https://github.com/llvm/llvm-project/issues/184081
(cherry picked from commit ca1eefdfc061fc062b6b9dc4149ca4a0e51bde08)
[lldb] Wrap HWCAP defines in ifndef (NFC) (#186283)
Fixes a redefinition warning on Ubuntu 25.10 coming from `ptrace.h`
including `hwcap.h`.
```
/home/jonas/llvm/llvm-project/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp:84:9: warning: ‘HWCAP2_POE’ redefined
84 | #define HWCAP2_POE (1ULL << 63)
| ^~~~~~~~~~
In file included from /usr/include/aarch64-linux-gnu/asm/ptrace.h:25,
from /home/jonas/llvm/llvm-project/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h:19,
from /home/jonas/llvm/llvm-project/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp:11:
/usr/include/aarch64-linux-gnu/asm/hwcap.h:141:9: note: this is the location of the previous definition
141 | #define kkk (1UL << 63)
| ^~~~~~~~~~
```
[AMDGPU][SIInsertWaitcnts] Create a WCG instance per MF (#185916)
WaitcntGenerator state depends on MF attributes, so create a new WCG object per MF
until we have a better solution. This patch also adds a test that exercises this.
Even though we stopped creating a new WCG instance in #177689, the behavior
didn't change because SIInsertWaitcnts gets recreated on every MF
(so this patch is practically an NFC).
[lldb] Build debugserver fat for arm64 and arm64e (#186038)
Change the default of `LLDB_ENABLE_ARM64E_DEBUGSERVER` so we build
debugserver fat for arm64 and arm64e when running on macOS Tahoe (26) or
later on ptrauth-capable hardware.
[SystemZ] Limit depth of findCCUse() (#185922)
The recursion here has potentially exponential complexity. Avoid this by
limiting the depth of recursion.
An alternative would be to memoize the results. I went with the simpler
depth limit on the assumption that we don't particularly care about very
deep value chains here.
Fixes https://github.com/llvm/llvm-project/issues/185905.
(cherry picked from commit 11e0d6ae4b00114d642f03168f57a007464bf5f6)
[arm64ec] Fix missing sret return in Arm64EC entry thunks for large struct returns (#185452)
When an Arm64EC function returns a struct by value that is too large for
x64's `RAX` (>8 bytes), the entry thunk synthesizes a hidden sret
pointer parameter for the x64 side. However, this
parameter was never marked with the sret attribute, so ISel did not copy
its value into `x8` (the Arm64EC mapping of `RAX`) on return. This
caused the x64 caller to see a garbage pointer in `RAX` instead of the
return buffer address.
The change adds the sret attribute to the thunk's synthesized pointer
parameter, so that `LowerFormalArguments` saves it and `LowerReturn`
restores it to `x8` before the tail call to `__os_arm64x_dispatch_ret`.
Fixes #185390
(cherry picked from commit 90978e484f289f4c7036486e375166f69a587b2b)
[FastISel] Lower call instruction with illegal type returned (#180322)
Fix issue https://github.com/llvm/llvm-project/issues/179100
When lowering the call instruction with illegal type returned, we should
bail out and transfer the lowering to DAG. Otherwise the return value is
not promoted to proper type, but DAG would assume it has been promoted.
---------
Co-authored-by: Yuanke Luo <ykluo at birentech.com>
(cherry picked from commit 41ef3d083a0925cb9c184057f76a0d42ad5680ab)
[SimplifyCFG] process prof data when remove case in umin (#182261)
In #164097, we introduce a optimization for umin. But it does not handle
profile data correctly.
This PR remove profile data when remove cases.
Fixed: #181837
(cherry picked from commit 31e5f86a3cdc960ef7b2f0a533c4a37cf526cacd)
[win][clang] Fix devirtualization of vector deleting destructor call (#183741)
Since vector deleting destructor performs a loop over array elements and
calls delete[], simply devirtualizing call to it produces wrong code
with memory leaks.
Before emitting virtual call to vector deleting destructor, check if it
can be devirtualized, if yes, emit normal loop over array elements
instead of a virtual call.
No release note since this is a relatively recent regression.
This aims to fix https://github.com/llvm/llvm-project/issues/183621
[X86] Fold BLENDI(X,Y) -> VZEXT_MOVL if the upper elements are known to be zero (#186267)
The zext_inreg test changes are interesting - we mostly get closer to
the VPBLENDW(XMM,0) pattern, but the fast-shuffle targets still fail to
recognize the upper half of the YMM is zero and don't simplify the
AND(YMM,C) as much as they could.
Helps with regression identified on #182200
[OpenMP] Move OpenMP implicit argument to the end and reformat (#185989)
Summary:
We use this `dyn_ptr` argument in Clang/OpenMP to handle the
`KernelLaunchEnvironment`. This is a per-kernel argument used to share
some information. Currenetly, it's prepended to the argument list and we
generate storage for it in the runtime.
This is bad for a few reasons:
1. It changes the ABI by shifting user arguments
2. It cannot be trivially be left uninitialized if unused
3. The runtime must allocate its own memory for it
This PR changes it to be appended instead. Additionally, space for this
is always emitted. This means the OMPIRBuilder itself will provide the
storage, we simply need to populate it in the runtime if it is used.
This means that if it's unused we don't always pay the cost and it's
easier for non-OpenMP users to ignore it.
[4 lines not shown]
[LLDB] Modify CreateValueObjectFrom* to take an ExecutionContext (#185547)
Currently these functions take a target pointer. In Cross-language
projects this means it's down to chance what typesystem the resulting
value will be in, since the implementation returns the first scratch
type system in the target, which depends on the order of images and
their implementation language.
By passing in an execution context the selected frame is used to
determine the typesystem, which is usually the expected outcome when
using DIL.
This should be entirely NFC for Clang-only LLDBs, but is a necessity for
LLDBs with additional type system plugins such as the Swift plugin.
Assisted by Claude to patch the call sites.
calendar.freebsd: add myself (khorben@)
This adds my date and place of birth to FreeBSD's calendar file, so I
can let the system(tm) remind me when that counter increments.
Confirmed to be working with the following command:
```
$ calendar -f usr.bin/calendar/calendars/calendar.freebsd -t 18.08
Aug 18 Pierre Pronchery <khorben at FreeBSD.org> born in Nantes, France, 1982
[...]
```
Reviewed by: philip (mentor)
Approved by: philip (mentor)
Differential Revision: https://reviews.freebsd.org/D55825
calendar.freebsd: add myself (khorben@)
This adds my date and place of birth to FreeBSD's calendar file, so I
can let the system(tm) remind me when that counter increments.
Confirmed to be working with the following command:
```
$ calendar -f usr.bin/calendar/calendars/calendar.freebsd -t 18.08
Aug 18 Pierre Pronchery <khorben at FreeBSD.org> born in Nantes, France, 1982
[...]
```
Reviewed by: philip (mentor)
Approved by: philip (mentor)
Differential Revision: https://reviews.freebsd.org/D55825
sysutils/logstash7: Update 7.17.11 => 7.17.29, deprecate
Release Notes:
https://www.elastic.co/guide/en/logstash/7.17/releasenotes.html
Improve port:
- Replace PORTVERSION with DISTVERSION.
- Add LOCAL/vvd/elastic to MASTER_SITES for those who can't download
due to the HTTP error "Forbidden 403".
- Deprecate with date 2026-06-30 due to 7.x reached EoL on 15 Jan 2026.
- Limit JAVA_VERSION to supported 17, 11 and 8.
- Parametrize "logstash" with "${PORTNAME}".
- Adjust CONFLICTS.
- Add possibility to use custom user/group.
- Merge CHMODs.
- Fix white characters and remove unnecessary empty lines.
- Remove unnecessary MKDIR.
PR: 293746
[4 lines not shown]