[Option] Add BoolOrDefault for OptionalBoolField and DefaultOnOffField
The members of OptionalBoolField and DefaultOnOffField are
std::optional<bool>, on which `if (X)` tests whether the option is
given, not its value. Make them a new 1-byte `enum class BoolOrDefault :
uint8_t { Default, False, True }`, which does not convert to bool, and
read them with `valueOr(X, Default)`. A FlagOrEq without a value is
parsed as =true, so that it can set either member type.
Aided by Opus 5.5
Allow non local MemoryDef tries to run
The MemoryDef can be outside of the BB but the user still inside bb. An
early exit while loop early return in this case. We at least give
scanMemoryAccessUsers a chance to run.
Assisted-by: Claude # Test
[Option] Add FlagOrEq and SeparateOrEq option kinds (#228319)
FlagOrEq accepts -x and -x=v; SeparateOrEq accepts -x=v and -x v. The
name is stored without '=', and RenderEqStyle renders -x=v. BoolField
and ValueField use them, so a library option takes one table row instead
of a Joined twin plus a Flag or a Separate alias.
CGDataOptions.cpp.o shrinks from 4,977 to 4,370 bytes and
InstCombineCLOptions.cpp.o from 4,180 to 3,553.
Aided by Opus 5.5
[Option] Add BoolOrDefault for OptionalBoolField and DefaultOnOffField
The members of OptionalBoolField and DefaultOnOffField are
std::optional<bool>, on which `if (X)` tests whether the option is
given, not its value. Make them a new 1-byte `enum class BoolOrDefault :
uint8_t { Default, True, False }`, which does not convert to bool, and
read them with `valueOr(X, Default)`.
Aided by Opus 5.5
[mlir][xegpu] Raise the reduction vector size to match maxReduceVectorSize (#225122)
`maxReduceVectorSize` was pinned at 1, so a lane reduced one element at
a time no
matter how much data it held. This raises it to 16 and makes the layout
computation actually spend it, so a lane's reduce vector matches the
per-lane
budget.
```cpp
- int64_t maxReduceVectorSize = 1; // could extend to spirv vector Size
+ int64_t maxReduceVectorSize = 16; // extend to spirv vector Size
```
The PR only raises the vector size for the innermost dim, and only when
that dim is reduced and carries a single lane.
The reason we don't raise vector size for outer dim: Raising the vector
size for the outer dim means the vector may be strided in flat element
[10 lines not shown]
[alpha.webkit.NoDeleteChecker] Support nodelete on constructors and destructors (#218822)
This PR adds the support for specifying nodelete annotation on C++
constructors and destructors. To do this, we recognize
[[clang::annotate("webkit.nodelete")]] on function declarations instead
of [[clang::annotate_type("webkit.nodelete")]] on the return value.
---------
Co-authored-by: Balázs Benics <benicsbalazs at gmail.com>