[libc++][ranges] Implement LWG3797: `elements_view` insufficiently constrained (#236930)
Require `std::get<N>(t)` to be valid in `has-tuple-element`. Previously,
a range of `subrange`s over a move-only iterator satisfied the
constraints of `elements_view<V, 0>` and then failed with a hard error,
because `subrange`'s lvalue `get<0>` requires `copyable<I>`.
Fixes #189811
DirectX: Give DXIL op attribute records a Name field
The DXIL attributes were defined with names colliding with the normal
definitions in Attributes.td. It just happens that isn't included by
the backend today, but I am planning on changing that. Add a prefix
and add an explicit name field so the generated names don't change.
Alternatively it might be possible to specify these directly with the
attribute intrinsic properties.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[ci] Fix LNT submission when a single artifact is downloaded (#237584)
When the artifact pattern matches a single artifact, download-artifact
extracts it directly into the target directory instead of a subdirectory.
This means a glob like `reports/*/*.json` doesn't match. To fix this,
use a glob for both `reports/*/*.json` and `reports/*.json`.
TableGen: Don't distinguish intrinsic function attribute sets by hasSideEffects (#237501)
hasSideEffects does not contribute to the emitted function attributes,
so including it in the uniquing key emitted duplicate attribute sets.
This removes 17 redundant function attribute sets, which also shrinks
the function attribute set ID from 8 to 7 bits.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[Support] Delete copy constructor in SourceMgrDiagnosticVerifier (#236962)
When building LLVM as a DLL on Windows, MSVC attempts to instantiate
implicit members such as the copy constructor. This class is already not
copyable due to having a `unique_ptr` member, so explicitly mark the
copy constructor and copy assignment operator as deleted.
The effort to build LLVM as a dylib is tracked in #109483.
[AssumeBundleQueries] Remove getKnowledgeFromUse (#237174)
The function is used only in a single place, where inlining the function
allows simplifying the code quite a bit.
[libc++] Download LNT series incrementally when selecting refinement commits (#237566)
Selecting refinement commits requires downloading a large amount of data
from LNT (the time series for all tests). When done repeatedly, this
drains the credits we have for the datanase's IO. Instead, cache the
data we've already downloaded and download only what's missing.
Assisted by Claude
[CodeGen][MachineOutliner] Ignore debug instructions when checking pa… (#227971)
…tchable exits
isMBBSafeToOutlineFrom checks the instruction before a return for
PATCHABLE_FUNCTION_EXIT and PATCHABLE_TAIL_CALL. A debug instruction
between the patchable instruction and the return currently hides it and
allows the block to be outlined.
Use prev_nodbg for the backward check while preserving the existing
treatment of pseudo probes. Retain the direct-adjacency coverage and add
a regression with a DBG_VALUE between PATCHABLE_FUNCTION_EXIT and RET.
Fixes #227922
Assisted-by: OpenAI Codex 5.6 Sol
Assisted-by: Claude (review)
[GlobalISel] Fixup commuted combine matching
Match the subtraction on either side of (A-C1)+C2. Check constants and
use counts through the matched operands.
Look through single-use copies when unmerging constants to avoid extra
AMDGPU materializations. Preserve shared constants and copies, physical
register copies, and constant-fold barriers.
Cover commuted subtraction and copied constants in MIR tests, and update
affected AMDGPU assembly checks.
[libc][docs] Update `index.md` for float80 and double_double functions (#236675)
This removed the long_double column, replacing it with the float80 and
double_double functions.
( Assisted using : Gemini )
[OpenMP][offload] Apply the low-trip rule to no-loop kernels
A no-loop kernel gets one thread per iteration. Like an SPMD kernel, it
now gets fewer threads per block, down to
LIBOMPTARGET_MIN_THREADS_FOR_LOW_TRIP_COUNT, and more blocks if its loop
is too short to fill the default number of blocks. A thread_limit is
never changed. For example, a no-loop kernel of 512 iterations gets
16x32 instead of 2x256 on MI210. For BLAS level-3 kernels of that shape,
each iteration a long serial loop, that is 3-6x faster.
This is an upstream port of the corresponding downstream.
Claude assisted with this patch.
[SelectionDAG] Check legality when folding scalar vector concatenations
Allow scalar-to-vector concatenations after operation legalization when the resulting BUILD_VECTOR is legal. Check newly required integer truncations as well, and use opcode-first comparisons.
Document why FP scalars need no conversion. Add an AMDGPU IR regression for concatenating a floating-point SCALAR_TO_VECTOR with a BUILD_VECTOR.