[flang][PFT] Mark ASSIGN'd labels as assigned GO TO targets (#218674)
An assigned GO TO with an explicit label list only marked the listed
labels as branch targets. Lowering is more permissive: genFIR for
AssignedGotoStmt in flang/lib/Lower/Bridge.cpp builds the switch from
the labels ASSIGN'd to the variable and ignores the list.
A construct holding an ASSIGN'd label that the list omits therefore
looked wrappable, was placed in an scf.execute_region, and the branch
then crossed a region boundary:
```
error: 'fir.select' op branching to block of a different region
```
Mark both sets so the wrappability analysis sees every escape.
nfs: Work around missing VM_MIN/MAX_KERNEL_ADDRESS in rump.
Let's get the builds unbroken before making this perfect.
PR kern/60645: nfssvc(2): arithmetic overflow in input array sizing
[Offload] Add rpath to LLVM libs if dynamically linked (#215557)
Summary:
The offload/ library is different from every other LLVM runtime in that
it links the LLVM libraries themselves. The issue here is that in the
normal configuration, `libomptarget.so` goes in `lib/<triple>` while the
LLVM libs it depends on goes in `lib/`. If the LLVM libraries are
statically linked, there is no problem. However, we need to make sure
these point to the right place transitively when built in a shared
configuration. This solves the edge from `libomptarget -> LLVM`. The
edge from `user app -> libomptarget` should be solved by
`-frtlib-add-rpath`.
Should ideally fix the LLVM half of
https://github.com/llvm/llvm-project/pull/215532
[mlir][IR] Fix symbol visibility API (#218910)
Fix `SymbolTable::get/setSymbolVisibility`. These functions used to
read/write the hard-coded `sym_visibility` attribute, even though the op
may store visibility in a different way. The new implementations
dispatch to `SymbolOpInterface::get/setVisibility`.
No change in functionality for the interface methods: Their default
implementations still read/write `sym_visibility`. (That may change in a
follow-up commit.) This commit just aligns the
`SymbolTable::get/setSymbolVisibility` API with the op interface.
Also turn `SymbolOpInterface::isNested/setNested/...` into
non-overridable helper functions. Users should implement
`SymbolOpInterface::get/setVisibility` instead.
Assisted-by: Opus 5 High
[mlir][Bufferization] Separate AllocTensorOp properties from discardable attribute in assembly (#218914)
Print and parse inherent properties separately from discardable
attributes in the AllocTensorOp custom assembly format.
Keep operand segment sizes inferred from the operand syntax and move
memory space spellings to the property dictionary.
Assisted-by: Codex
[lldb] Restrict expressions to one top-level assignment in DIL (#214348)
This patch restricts DIL expression to have only one assignment and only
at top level. This has to be done to avoid unsequenced modifications to
the same ValueObject in one expression.
[X86] Emit ADD instead of SHL by 1 when shrinking TEST with a mask (#217508)
The immediate-TEST shrink rewrites (and x, 0x7fffffffffffffff) == 0 into
SHL64ri $1 + TEST64rr, expecting the redundant TEST to be "subsequently
eliminated" (per the comment). For shift amounts 1-3 it never is:
isDefConvertible() rejects those SHLs so that they stay convertible to
LEA, and the dead TEST survives into final binaries.
Emit ADD64rr x, x instead when the shift amount is 1. Doubling is value-
and ZF-identical to the shift at the same encoding length, executes on
more ports, and ADDrr is def-convertible, so the peephole really does
fold the TEST away, leaving add+jcc/setcc instead of shl+test+jcc/setcc.
The shape is common: it is Rust libstd's panic-counter fast path
(GLOBAL_PANIC_COUNT & ~(1 << 63) == 0, inlined at every
std::thread::panicking() check -- 249 copies in uutils coreutils) and
LLVM's own is_fpclass zero-class lowering, as the is_fpclass.ll diff
shows.
[7 lines not shown]
Fix crash when trying to access the /admin/ page
Apparently checking passwords goes through checks for hash algorithms
supported by crypt(3). But since none of the algorithms checked are
supported by the OpenBSD libc, the code ends up dereferencing a NULL
pointer. I'm not sure yet why the code checks for algorithms supported
by crypt(3), as the code wasn't present in icecast-2.4.4.
To fix this, avoid dereferencing said NULL pointer. While here, add
DEBUG_PACKAGES.
Problem reported by Olivier Cherrier.
[mlir][SparseTensor] Use split discardable/inherent attribute APIs (#218904)
Migrate SparseTensor IR, lowering, code generation, and loop emission to
explicit discardable or operation-specific attribute access.
Assisted-by: Codex
[mlir][Func][Async][EmitC] Use split discardable/inherent attribute APIs (#218905)
Use operation-specific accessors and explicit discardable attribute APIs
in the Func, Async, and EmitC dialects and their associated conversions.
Assisted-by: Codex
[AMDGPU] Fix unsaturated add when moving 64-bit ctlz/cttz to the VALU (#216707)
The ffbh/ffbl add is saturated via a clamp modifier, but on gfx6/7/8 it
lowers to V_ADD_CO_U32_e32, which has no clamp operand, so
ctlz/cttz.i64(0, false) returns 31 instead of 64 there
ffbh/ffbl only produce 0..31 or -1, so uaddsat(x, 32) is just x | 32
Use V_OR_B32_e32 instead, which needs no clamp and works everywhere