[clang] Migrate away from PointerUnion::dyn_cast (NFC) (#228991)
Note that PointerUnion::dyn_cast has been soft deprecated in
PointerUnion.h:
// FIXME: Replace the uses of is(), get() and dyn_cast() with
// isa<T>, cast<T> and the llvm::dyn_cast<T>
Literal migration would result in dyn_cast_if_present (see the
definition of PointerUnion::dyn_cast), but this patch uses dyn_cast.
Note that Target here traces back to AnnotationWarningsMap, which is
populated only with nonnull pointers.
Assisted-by: Antigravity
[mlir][x86] Bail out gracefully if accumulator is initialized from block arg (#228080)
`traceToVectorReadLikeParentOperation` may return `nullptr`, so defer
further checks until we know that a suitable op was found.
[CIR][HIP] Use the kernel handle as a kernel's address on the host (#228377)
For HIP, a __global__ function referenced from host code is represented
by its kernel handle. CIR used the address of the device stub instead,
so APIs that take a kernel pointer failed.
Match classic codegen:
- emitFunctionDeclLValue gives the address of the kernel handle.
- Constant initializers, such as tables of kernel pointers, refer to the
kernel handle.
- A launch through a kernel pointer (f<<<...>>>) loads the device stub
from the handle and calls it.
CUDA has no separate kernel handle, instead the address of a kernel is
the device stub. The new test covers both HIP and CUDA.
Assisted-by: Claude Opus 5.5
Signed-off-by: Steffen Holst Larsen <sholstla at amd.com>
[NFC][IR] Use getDataLayout member function for Instruction and BasicBlock (#228989)
Follow up on #96902: remove some uses of the old
`getModule()->getDataLayout()` pattern.
Related PR: #228964
[NFC][IR] Use getDataLayout member function for Function and GlobalValue (#228964)
Follow up on #96919: remove some uses of the old
`getParent()->getDataLayout()` pattern.
[flang] Fix locations of wrapped unstructured constructs and DO loop ends (#228577)
Construct evaluations have no source position, so the scf.execute_region
wrapping an unstructured construct was given the location of the
previously lowered statement. Use the construct's first statement for
the region and its END statement for the scf.yield. Also attribute the
DO loop end code to the END DO statement rather than to the last
statement of the loop body.
This avoids going back to previous lines when stepping in a debugger.
Assisted-by: AI
[mlir][scf] Keep scf.yield locations when lowering scf.execute_region (#228575)
The branches replacing the scf.yield terminators of an
scf.execute_region used the location of the scf.execute_region. Use the
location of the scf.yield they replace instead.
[TailCallElim] Do not mark a call tail when it is handed the frame (#218797)
markTails refuses to mark a call tail if it is passed an alloca or a
byval
argument, but it missed the intrinsics that return an address in the
current
frame, such as llvm.frameaddress(0), llvm.localaddress and
llvm.stacksave. The
frame is torn down before a tail callee runs, so the callee received a
dangling
pointer. gcc.c-torture/execute/frame-address.c aborts because of this.
llvm.stackrestore is no longer treated as an escape, since it does not
capture
its argument. Otherwise calls after a VLA scope would lose their tail
marking.
LangRef now states that a tail callee may not access the caller's stack
frame.
[3 lines not shown]
[VectorCombine] Fold insertelement chains of scalar parts to a bitcast and shuffle (#226224)
An insertelement chain whose elements are all truncated parts of the
same scalar is lowered element by element, unless InstCombine can turn
an in-order pair of halves into a bitcast (`foldTruncInsEltPair`). The
SLP vectorizer produces such chains for the fields of a struct that SROA
loaded as one integer, e.g. when summing two float fields in a loop:
```llvm
%hi = lshr i64 %x, 32
%h = trunc i64 %hi to i32
%l = trunc i64 %x to i32
%v0 = insertelement <2 x i32> poison, i32 %h, i64 0
%v1 = insertelement <2 x i32> %v0, i32 %l, i64 1
```
which X86 lowers to shrq + vmovd + vpinsrd. If TTI says it is cheaper,
replace the chain by a shuffle of the bitcast scalar:
[27 lines not shown]
py-scrapy: updated to 2.19.0
Scrapy 2.19.0 (2026-09-10)
Highlights:
- New ``RemoteControl`` extension which allows inspecting and controlling a
running crawl over HTTP, used by the :ref:`Scrapy MCP server
<using-mcp-server>`
- Experimental ``aiohttp``-based download handler (now the default when
running without a reactor)
Modified requirements
- Added support for Python 3.15.
- New dependencies:
- aiohttp_ >= 3.13.3
[215 lines not shown]
[CIR][CUDA][HIP] Exclude wrong-side virtual functions from vtables (#228433)
OGCG builds the vtables of a CUDA/HIP compilation for the side being
compiled, that is a slot whose virtual function cannot be emitted on
that side is null.
Port both parts of CodeGenVTables::addVTableComponent to
CIRGenVTables::getVTableComponent. As in OGCG, a null slot that holds a
thunk still advances the thunk index, so later thunks keep their slots.
Assisted-by: Claude Opus 5.5
Signed-off-by: Steffen Holst Larsen <sholstla at amd.com>