[CIR] Reject the empty fenv attribute
`#cir.fenv<>` with no parameter set was accepted, printed as `fenv<>` and
lowered to a constrained intrinsic, so an unconstrained operation had two
spellings. Give `#cir.fenv` a verifier that requires at least one
parameter, leaving a missing `fenv` attribute as the only way to say an
operation is unconstrained. An absent parameter now takes its value in the
default FP environment (tonearest, masked, non-strict): lowering reads the
parameters through the same OrDefault helpers as speculation and checks
strict_except first, so a strict op stays fpexcept.strict even when masked.
Reduce FPEnvConstrainedOpInterface to getFenvAttr() and add a CIR_FenvOp
base class carrying the fenv traits and argument, which the fenv ops
prepend their operands to.
Assisted-by: Claude Code (Opus 5.5).
[LoongArch] Select [X]VBITSELI_B for byte splat bitsel on wider element types
The VBITSELI_B/XVBITSELI_B patterns only matched v16i8/v32i8. When the
bitwise select idiom `(a & imm) | (~a & b)` appears on v8i16/v4i32/v2i64
(or the LASX equivalents) with a byte splat constant, e.g. from portable
SIMD implementations of the bitseli intrinsics, we emitted:
```
vrepli.b $vr2, 127
vbitsel.v $vr0, $vr1, $vr2, $vr0
```
Use vsplat_i8_uimm8, as VANDI_B/VORI_B/etc. already do, so that we now
emit:
```
vbitseli.b $vr0, $vr1, 127
```
Assisted-By: LLM
[LoongArch][NFC] Add tests for vector bitwise selection with byte splat immediates
Add tests for bitwise selection on non-i8 element vectors where the
select-constant is a byte splat, which could be selected to
VBITSELI_B/XVBITSELI_B.
Assisted-By: LLM
[alpha.webkit.NoDeleteChecker] Don't check base class fields in constructors (#242238)
The checker reported a constructor annotated with webkit.nodelete when
any field of its class, or of any of its base classes, has a default
constructor that is not known to be trivial. Neither base class fields
nor fields of a delegating constructor are constructed by the
constructor being checked:
struct Observer {
[[clang::annotate("webkit.nodelete")]] explicit Observer(int*);
WeakPtr<Context> m_context;
};
struct ActiveObject : Observer {
[[clang::annotate("webkit.nodelete")]] explicit ActiveObject(int* p)
: ActiveObject(p, Checked) { }
...
[[clang::annotate("webkit.nodelete")]] ActiveObject(int* p, CheckedType)
: Observer(p) { }
[19 lines not shown]
[lldb] Bound register writes from Mach-O process metadata (#239787)
RegisterContextUnifiedCore sized its register buffer by summing the
metadata register sizes into a uint32_t, then wrote the register values
without a bounds check. Sizes whose sum wraps around leave the buffer
smaller than the values written into it.
Grow the buffer as each value is written instead. Also reject register
entries that aren't dictionaries.
rdar://187065217
Assisted-by: Claude
[clangd] Omit C++ access specifiers from C hovers (#239877)
This PR addresses the access-specifier portion of clangd/clangd#2700.
Hovering over a C struct member currently shows C++ syntax such as
`public: int location`.
Only populate `HoverInfo::AccessSpecifier` in C++ mode so C hovers
show `int location` while preserving C++ access labels.
The issue discusses `::` in the `// In ...` scope annotation,
but the discussion leaves open whether that notation should change.
This PR addresses only the access-specifier behavior and
leaves scope formatting unchanged.
Validation:
- Added regression coverage for ordinary C structs, anonymous nested
C structs, and a C++ control case.
- All 37 `Hover.*` tests passed after rebasing and rebuilding.
[2 lines not shown]