[PM] Make InvalidateAllAnalysesPass Optional (#196956)
Similar reasoning to 221a24e94f7b03ea881df34cc8867c58ac8fdb52. Making
this required means we end up with assertion failures in the LPM around
LCSSA.
This is a bit unfortunate given it would be nice to ensure we can
trivially invalidate analyses on optnone functions, but this matches the
old behavior and prevents and assertion failure for now.
[clang][NFC] Mark CWG988 as implemented and add a test (#196889)
[CWG988](https://wg21.link/cwg988) specifies that reference collapsing
is performed when trying to form a reference to a `decltype`. Clang
implements this since 2.7: https://godbolt.org/z/vYzKbv8x7 (and I
checked a few versions after that to make sure there were no
regressions).
[flang] Remove legacy (non-HLFIR) lowering and related options (#196205)
Drop the user-facing options that selected the legacy non-HLFIR lowering
path, the always-true `LowerToHighLevelFIR` lowering option, and the
descriptor-discretization debug switch:
- `-flang-experimental-hlfir` and `-flang-deprecated-no-hlfir` (flang
driver and `-fc1`)
- `-hlfir` / `--hlfir` (bbc)
- `--use-desc-for-alloc` (bbc, debug)
Remove every `if (lowerToHighLevelFIR()) { ... } else { ... }` branch in
`lib/Lower/`, keeping the HLFIR side. Delete the now-unused legacy
helpers in `Bridge.cpp` (`copyVarFIR`, both
`genNoHLFIRPointerAssignment`
overloads, the legacy block of `genAssignment`) and the always-empty
`createMutableProperties` together with its four dead helpers in
`Allocatable.cpp`. Drop the corresponding `alwaysUseBox` parameter from
`createMutableBox`.
[4 lines not shown]
[NFC][LLVM] Namespace cleanup in LegacyPassManagerTest (#196811)
Remove llvm namespace surrounding the entire file, and remove extra
indentation of the code within the anonymous namespace.
[lldb] Release output lock across blocking el_wgetc in DisplayCompletions (#196686)
DisplayCompletions held m_output_stream_sp->Lock() across the blocking
el_wgetc() call used by the "More (Y/n/a)" pager. Because the lock is a
recursive_mutex, this worked when Editline::Interrupt() ran on the same
thread (the synchronous SIGINT handler), but deadlocks when Interrupt()
runs on another thread: it blocks on the lock and can never call
InterruptRead() to wake the editor thread.
Mirror the pattern already used by Editline::GetCharacter: drop the lock
across the blocking read and reacquire it afterward. The status check
and the "^C\n" / "\n" prints stay under the lock.
[StackColoring] Treat all stack slots as conservative with `returns_twice` call-sites (#196542)
Do not merge stack slots on disjoint paths if the function may call
setjmp/sigsetjmp, as the current algorithm defaults to computing
liveness analysis from the actual uses propagated through the CFG,
rather than leveraging lifetime markers, thus making it unsound with
`returns_twice` calls.
Fixes: https://github.com/llvm/llvm-project/issues/196468.
NAS-140959 / 27.0.0-BETA.1 / get rid of misleading bisect function (#18925)
Remove the misleadingly-named `bisect` helper from
`middlewared/utils/__init__.py`. Despite the name, it wasn't a bisection
it was a partition (split an iterable into two lists by predicate),
which collided with Python's stdlib `bisect` module that does binary
search on sorted sequences.
It had a single caller (`plugins/alert/alert.py`, two call sites).
Inlined as a small file-local `partition[T](...)` helper using PEP 695
generic syntax — no TypeVar boilerplate, no shared utility for one
consumer.
- `middlewared/utils/__init__.py`: dropped `bisect`, the `_V` TypeVar,
and the now-unused `Callable`/`Iterable`/`TypeVar` imports.
- `plugins/alert/alert.py`: added a local `partition` helper with
docstring; updated both call sites; added `Iterable` to the
`TYPE_CHECKING` block.
(cherry picked from commit 5d0bbc0db871f4b48668a1baf16d5214020edd53)
AMDGPU/GlobalISel: Switch to extended LLTs
Switch is required to be able to translate bfloat.
After the switch most of the codegen patterns now require explicit
type on register to match instead of LLT::scalar.
So we can still use LLT::scalar for type checks but new instructions
created during lowerings/combines need to use propper extended LLT.
inst select test sources fully switched to i32/f32 so patterns can match
for legalizer and regbanklegalize left as is (should probably be switched
as well)
New functionality worth noting is f16 and bitcast lowering to i32
f16 = g_bitcast i16
->
i32 = g_anyext i16
f16 = g_trunc i32
f16 = trunc i32 is legal
NAS-140958 / 26.0.0-RC.1 / fix update crash (by yocalebo) (#18924)
We don't officially support jumping multiple major versions when doing
updates. We have always said that you need to go to the next major
version during upgrade process. However, internally, I was working on
something unrelated and tried to bump an internal system from a nightly
running 25.04 to latest 27 nightly. It failed in a rather peculiar way.
The long-story kept short is that it's failing on an import in
`utils/__init__.py` which is kind of gross. The very simple solution is
to remove the import which I've done in this PR. It's safe to remove
this import because we already set the default executor in`main.py`.
With the changes in this PR, I was able to upgrade the system without
issues.The crash looked something like this:
```
Status: Preparing GRUB configuration
[EFAULT] Error: Command ['chroot', '/tmp/tmp9p1rlsk3', '/usr/local/bin/truenas-grub.py'] failed with exit code -6: Fatal Python error: init_py_struct_prop_state: Hidden property in zfs_prop_table. [src/libzfs/py_zfs_prop.c:148]
Python runtime state: initialized
Current thread 0x00007f7328236100 (most recent call first):
[85 lines not shown]
luanti: update to 5.16.1
5.16.1:
Fixed bug introduced in 5.16.0 with water rendering
5.16.0:
Deprecations and compatibility notes
- Writing to mod directories is now disallowed
Client / Audiovisuals
- Texture pack override.txt now supports overriding overlay tiles
- Restore inventory cube (item mesh) shading
- Fixed incorrect animation state when placing nodes quickly
- Fixed a graphical issue where the fog incorrectly changed the
color of semi-transparent particles
- Support more mouse buttons (beyond X2)
- Add keybinds for camera movement
- Formspec: Bug fixes related to inventory list interactions
- Formspec: Focus behavior improvements
[44 lines not shown]
[clang][AST] Teach `CXXTypeidExpr::isMostDerived` to use `isEffectivelyFinal` (#196544)
Resolves #196476.
When a class is marked final, typeid on references to that type can be
resolved at compile time since the most-derived type is statically
known.
[CIR] Implement Namespace/global TLS CIR CodeGen (#196332)
Unlike local TLS, global TLS functions need to be initialized upon their
first use in a thread.
First, all attempts to 'get' said TLS global are replaced with calls to
a 'wrapper' function, which calls an 'init' alias function, then returns
the global. While classic codegen manages to omit this in simple cases
sometimes, this CIR implementation doesn't attempt to do such constant
folding/inlining. The call to the 'init' is omitted if there is no
ctor/dtor setup required, so sometimes the wrapper is just a 'no-op'
(intentionally!).
There are also two types of 'global' TLS functions: unordered, and
ordered. Unordered are typically variable templates, and their 'init'
function initializes JUST them. The rest are ordered, which requires all
ordered initializations to happen as soon as any happen.
The Wrapper:
[25 lines not shown]