sysutils/bastille: Update to 1.4.0.260219
Co-authored-by: Michael Osipov <michaelo at FreeBSD.org>
PR: 293305
Approved by: tschetter.victor at gmail.com (maintainer)
MFH: 2026Q1
(cherry picked from commit 7dd7d0814044139df61e9edd0d0dc1ccce38467c)
sysutils/bastille: Update to 1.4.0.260219
Co-authored-by: Michael Osipov <michaelo at FreeBSD.org>
PR: 293305
Approved by: tschetter.victor at gmail.com (maintainer)
MFH: 2026Q1
[NCFI][OpenMPIRBuilderTest] remove some trivial uses of getAllocatedType (#181722)
These are the required uses of the alloca type, but have trivial access
to the expected result of that API call. The remaining uses in unittests
are for testing the LLVM API itself.
Co-authored-by: Claude Sonnet 4.5 <noreply at anthropic.com>
[APINotes] Document that Methods can now be nested under Tags
`Tags` can be nested under other `Tags`, which represents nested C++ classes.
`Methods` can be nested under `Tags`, which represents C++ methods.
rdar://151033780
Re-enable MSVC C4592 diagnostic; NFC (#182503)
This diagnostic is no longer documented on MSDN, but the diagnostic text
was:
> ''var': symbol will be dynamically initialized (implementation
limitation)
This was disabled in 5cbf37fe3703ee7744f864a53df443ab97e29af7 to work
around false positives with MSVC 2015 Update 1. I believe those false
positives have been fixed and this diagnostic no longer needs to be
disabled. Local testing shows it is not emitted.
[clang-tools] Fix cl::opt usage with Clang+PCH+dylib
Clang instantiates the vtable but not the method compare() of
OptionValueCopy<std::string> when using PCH. compare() is instantiated
as past of libLLVM.so, but due to -fvisibility-inlines-hidden, the
function is not visible when linking the tool. This might be a Clang
bug.
In any case, avoid this problem by disabling PCH.
Fix crash in clang_getUnaryOperatorKindSpelling() (#182247)
When clang_getUnaryOperatorKindSpelling() is called with
CXUnaryOperator_Invalid as argument, UnaryOperator::getOpcodeStr() gets
called with an invalid Opcode of -1, leading to a crash.
Fix it by checking for the last valid opcode as is done in
clang_getBinaryOperatorKindSpelling().
Do the same for clang_getBinaryOperatorKindSpelling(), as its logic is
the same.
[lldb][windows] keep track of interrupted reads in ConnectionGenericFile (#182536)
If a read is interrupted in `ConnectionGenericFile::Read`, the data that
has already been read by `ReadFile` is lost.
This patch adds `m_read_pending` to mark a read as interrupted. The next
read will pick up the results of the previous read and return the number
of `bytes_read`.
[clang][ARM] Refactor argument handling in `EmitAArch64BuiltinExpr` (2/2) (NFC)
Refactor `EmitAArch64BuiltinExpr` so that all AArch64/NEON builtins
handled by this hook _and marked as overloaded_ share a common path
for generating LLVM IR arguments (collected into the `Ops`
`SmallVector<Value*>`) (*). This is a follow-up for #181794 - please
refer to that PR for more context.
As in the previous PR, the key change is implemented in
`HasExtraNeonArgument` , i.e. in the hook that identifies Builtins with
the extra argument. In this PR, I am replacing the ad-hoc switch
statement with a more principled approach borrowed from SemaARM.cpp,
namely:
```cpp
uint64_t mask = 0;
switch (BuiltinID) {
#define GET_NEON_OVERLOAD_CHECK
#include "clang/Basic/arm_fp16.inc"
#include "clang/Basic/arm_neon.inc"
[28 lines not shown]
[Hexagon] Add HexagonGlobalScheduler pass (#180803) (#181961)
This patch adds the HexagonGlobalScheduler, a post-packetization pass
that performs global instruction scheduling and pull-up optimizations to
improve packet density on Hexagon VLIW architecture.
The scheduler operates on scheduling regions (super-blocks with single
entry and multiple exits) and attempts to move instructions across basic
blocks to fill packet slots more efficiently. It supports both
speculative and predicative scheduling modes.
Key features:
- Global instruction scheduling across basic blocks
- Speculative scheduling with safety checks
- Predicative scheduling using predication
- Local pull-up within basic blocks
- Dual jump formation
- Branch optimizations
- Liveness preservation using HexagonLiveVariables
[28 lines not shown]
[SPIRV] Do not eliminate `OpPointerType` even if unused
Our backend implementation is currently very unpractical.
We keep a dictionary that maps registers to their type.
If the register type and instruction result type do not match,
`validatePtrTypes` will insert bitcasts and fix the situation.
However, when no instruction references the type in the dictionary,
we may remove it. Even if it is needed later.
This patch prevents this from happening for `OpPointerType`.
This is far from a good solution... But it gives us time to:
* reland https://github.com/llvm/llvm-project/pull/178143 and fix
https://github.com/llvm/llvm-project/issues/170339 which unblocks some
of the backend's users
* explore a better solution than the hidden inconsistent global state
that we currently have
stack-info: PR: https://github.com/llvm/llvm-project/pull/182551, branch: users/jmmartinez/spirv/memory-issues-3
[SPIRV][NFC] Add test that triggers ASAN failure
This test is reduced from a failure detected after attempting to merge
https://github.com/llvm/llvm-project/pull/178143.
Without ASAN the test passes. `spirv-val` fails likely due to an
unimplemented feature in `spirv-val` (assuming our implementation is
correct).
stack-info: PR: https://github.com/llvm/llvm-project/pull/182550, branch: users/jmmartinez/spirv/memory-issues-2
[SPIRV][NFC] Update tests to check `spirv-val` output
`spirv-val` does not accept these tests even if they seem correct.
Likely due to a bug/missing implementation in `spirv-val`.
stack-info: PR: https://github.com/llvm/llvm-project/pull/182549, branch: users/jmmartinez/spirv/memory-issues-1
[clang][ARM] Refactor argument handling in `EmitAArch64BuiltinExpr` (1/2) (NFC) (#181794)
Refactor `EmitAArch64BuiltinExpr` so that all AArch64/NEON builtins
handled by this hook _and marked as non-overloaded_ share a common path
for generating LLVM IR arguments (collected into the `Ops`
`SmallVector<Value*>`) (*)
Previously, the argument emission loop unconditionally skipped the
trailing argument:
```cpp
for (unsigned i = 0, e = E->getNumArgs() - 1; i != e; ++i)
```
This was originally intended to ignore the extra Sema-only argument
used by overloaded NEON builtins (e.g. the type discriminator passed
by `__builtin_neon_*` intrinsics). However, this logic was applied
unconditionally.
[36 lines not shown]
[CMake] Re-enable LIBCXX_HARDENING_MODE for assert build (#182383)
Previously in #68541, the change disabled LIBCXX_HARDENING_MODE for all
non-bootstrapping assert build to fix bootstrapping issues. CMake
variable `LIBCXX_HARDENING_MODE` is only affective in libcxx build to
set a default harderning mode. That means unless the build is
bootstrapped from the newly built libcxx, the harderning mode is not
enabled for assert built compiler, thus the compiler loses test coverage
like accessing the value from an empty std::optional.
The fix is to correctly define `_LIBCPP_HARDENING_MODE` in a way that
respect user defined LIBCXX_HARDENING_MODE. To be extra safe, compile
and test the defined marco will not cause error before using it.