[libsycl] Add $ORIGIN to RPATH for libLLVMSYCL (#224885)
Previously, libLLVMSYCL was built and installed without $ORIGIN set in
RPATH on ELF systems. This resulted in load failures due to failure to
find libLLVMOffload when LD_LIBRARY_PATH was not set. This change adds
$ORIGIN to RPATH both when building libLLVMSYCL in a build tree, and
when installing libLLVMSYCL in an install tree.
[SystemZ][z/OS] Use section ordinal for temporary symbols
A relocation involving a temporary symbol is interpreted as offset
of the symbol to the section begin. Currently, this is resolved via
the begin symbol of the section. However, that symbol may also have
the temporary flag set, and therefore has an index of 0. Since a
symbol is emitted of reach section, it is safe to use the ordinal
of the section instead, avoiding all issues with temporary symbols.
[compiler-rt][asan] Use native TLS for TSD on Windows (#222705)
GCC 16 supports native Windows TLS. Use compiler-rt's THREADLOCAL
abstraction for fake_tsd on all compilers instead of spelling the
MSVC-specific storage-class syntax directly. GCC configurations using
emulated TLS remain unsupported.
Co-authored-by: Hannes Domani <ssbssa at yahoo.de>
[compiler-rt] Retain sanitizer callbacks with MinGW GCC (#222711)
MSVC and clang-cl use /include directives emitted by WIN_FORCE_LINK. GNU
tools need an ordinary used relocation instead. Keep the sanitizer
initialization callbacks and ASan DSO registration object reachable when
linking with MinGW GCC.
---------
Co-authored-by: Hannes Domani <ssbssa at yahoo.de>
AMDGPU: Mark the SCC def dead in the waterfall loop expansion
The exec-mask manipulation in emitLoadScalarOpsFromVGPRLoop clobbers SCC,
but nothing in the generated loop reads it. Avoid depending on later fresh
computation of dead flags.
Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>
improve routing code in NPF
duplicate packet and end copy of the packet and locally manage original.
return false always to keep it in procedures returns.
mail/dovecot24: Fix runtime problems
1. Backport upstream patch that fixes anvil errors/crashes problems
related to logged "handshake with duplicate service" messages.
2. Add service reload support to rc.d script.
PR: 298769 [1], 298719 [2]
Approved by: osa, vvd (Mentors, implicit)
Co-authored-by: Herbert J. Skuhra <herbert at gojira.at>
Co-authored-by: Alexander Wittig <alexander at wittig.name>
[Clang] Re-analyze parenthesized aggregate mem-initializers on instantiation (#224918)
Fixes #176161
Fixes #189005
Fixes #213284
Since #138518, template instantiation keeps a parenthesized aggregate
initialization as a `CXXParenListInitExpr`, but its elements have
already been reverted to their written form (a braced list stays a
braced list, an implicit cast is stripped), so whoever consumes the node
has to redo the initialization from them. Variable initializers,
new-expressions and functional casts do that. `BuildMemberInitializer`
didn't: it took the whole node as one argument, guaranteed elision
accepted it as-is, and the constructor ended up with a member
initializer that was never analyzed. Depending on the shape that's the
`EmitAggExpr` assertion (#176161, #189005), a `0` stored as 32 bits into
a 64-bit field (#213284), a rejected valid array member like `arr(1,
2)`, or a union member silently left uninitialized. Clang 20 handled all
of these. The lambda and local class in #176161 are incidental; a plain
[8 lines not shown]
[flang] Convert unsigned MVBITS TO values before arith ops (#226189)
Load TO with its memory type and insert fir.convert to a signless
integer instead of a typed fir.load whose result type does not match the
referent. Mem2Reg otherwise forwards the stored unsigned value into
arith.andi, which only accepts signless integers.
Previously, MVBITS of UNSIGNED lowered TO as:
```
%to = fir.load %addr : !fir.ref<ui8> // result type i8
%and = arith.andi %mask, %to : i8
```
Generic form:
```
%to = "fir.load"(%addr) : (!fir.ref<ui8>) -> i8
```
[AMDGPU] Work around gfx1250 VOPD3 FP64 OPY hazard (#224741)
In a VOPD3 instruction whose OPX is a 64-bit operation, an OPY VGPR
source operand reads back the wrong value when it is the last VGPR the
wave owns.
A wave always owns a whole number of VGPR allocation granules, 16
registers each on gfx1250, so the last VGPR it owns is always the one
just below a granule boundary. Reject a pair whose OPY reads such a
register in checkVOPDRegConstraints, leaving the two components as
separate instructions.
VOPD is only an optimization, so losing a pairing is always safe.
The workaround is gated on a new vopd3-f64-opy-src-hazard subtarget
feature, enabled for gfx1250, gfx1251, gfx1250-strict.
Assisted-by: Claude Code:claude-opus-5
llc: Compute the DataLayout from the triple and ABI (#224576)
This is the minimum change to avoid createDataLayout. Future work
will be needed here to really drop use of the ABIName field.
[lldb] Consult Policy for expression evaluation capabilities (#225312)
`can_evaluate_expressions`, `can_run_all_threads` and
`can_try_all_threads` have been unused since 3fe311f215d0 added them:
nothing outside `Policy.h` and its unit test ever read them.
Two of them already had a hand-rolled equivalent, though.
`Target::EvaluateExpression` forces single-threaded execution while a
frame provider is active, which is what the two thread capabilities
describe. That check predates them by six weeks (e1cd55879b5f) and the
adoption patch never came back for it. Living in `Target` also means it
only sees expressions that go through `Target`, not the ones coming from
`FunctionCaller` or `IRInterpreter`.
This patch changes that to consult the capabilities where the decision
is actually made: `UserExpression::Evaluate` for
`can_evaluate_expressions`, and `RunThreadPlan` for the other two. The
Target check goes away.
[22 lines not shown]
[SCCP] Call correct simplifyBinOp in FP operation (#225992)
This simplify FPOps with correct FMF, which covers non-inlined functions
that can not be simplified by InstComb pass.
net/rsync: update 3.5.0 -> 3.5.1
Changelog: https://download.samba.org/pub/rsync/NEWS#3.5.1
Major changes:
- The protocol number was changed to 33
- Fixed several path-handling regressions from 3.5.0
- Fixed access to /dev/stdin, /dev/stdout, /dev/stderr and /dev/fd/N
- Restored --max-alloc=0 as a spelling for the parser's maximum allocation limit
- Fixed restricted-root paths in rrsync and detection of an inetd connection
- Allowed --contimeout for daemon connections made through --rsh
- Tightened validation of partial-directory state and alternate-destination paths on the receiver.
- Fixed undefined shifts in the bundled zlib code and a FreeBSD amd64 build involving SIMD
PR: 298724
Reported by: Christos Chatzaras <chris at cretaforce.gr>
X86: Mark the EFLAGS def of the FastISel call frame pseudos dead (#226281)
ADJCALLSTACKDOWN/UP are declared to clobber EFLAGS because they may
expand to a sub/add, but nothing reads the result. SelectionDAG's InstrEmitter
marks the def dead.
Co-authored-by: Claude Opus 5 <noreply at anthropic.com>
[lldb][test] Run TestExpeditedStackMemory's call chain on a new thread (#226248)
`test_memory_reads_when_examining_all_frames_locals` fails on some
machine,
```
AssertionError: 0 not greater than 0 : expected stack memory reads while examining deeper frames' stack-resident locals.
memory reads while examining locals: stack=0 heap=1 other=1 (total=2)
```
In the packet log of one run, lldb stops at dyld's `lldb_image_notifier`
before `main` runs, and reads image info array is on the main thread's
stack,
and lldb reads one cache line (512 bytes) in one go.
Due to the new feature #223417, debugserver keeps this range as a recent
read and sends it again at later stops. At the breakpoint in `func_e`,
`jThreadsInfo` also sends the recent reads, which cover the call chain's
stack by accident, so lldb reads every local on every frame from its
cache
and the walk sends no stack read. That is why test failed.
[5 lines not shown]
RegAllocFast: Mark unspilled implicit_def physreg defs dead
When a virtual register defined by an IMPLICIT_DEF is live out of the
block, or reloaded below, defineVirtReg deliberately skips the spill.
If there is also no use of the value in the block, the resulting physreg
def has no reader at all, but was left without a dead flag.
This avoids some unnecessary churn between regalloc runs on AMDGPU. Since
RA runs multiple times, missed dead flags in the first RA run get re-inferred
by the later runs which this avoids.
Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>
[lldb][test] Strip the MTE tag in TestExpeditedRecentReads (#226272)
When the inferior runs with MTE enabled, both heap cases in
`TestExpeditedRecentReads.py` fail at their first stop:
```
AssertionError: [] == [] : the first stop should read the heap buffer from the stub; reads: [0x104da8a00,0x104da8c00)
AssertionError: [] == [] : the first stop should read the heap buffer from the stub; reads: [0x1047acb30,0x1047acb38), [0x1047acb30,0x1047acb38), ...
```
lldb did read the heap buffer. `calloc` returns a pointer with an MTE
tag in its top byte, and lldb strips the tag before it reads memory:
```
(lldb) breakpoint set -p "break here" -f main.c
(lldb) process launch --memory-tagging
...
(lldb) frame variable heap
(Payload *) heap = 0x0b000001005b0b30
[11 lines not shown]