[qt/clang/llvm]: Summary of bulk changes made
KDE Git Services - Bulk Change <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git repository change summary for qt/clang/llvm Pushed by mirror-service into branch 'upstream/users/arsenm/dag-legal-poison'. Changed from 0000000000000000000000000000000000000000 to c47330bc0a3d9484520991c80f6d6f2f3b705d09 Acknowledgement was received that this change introduces only existing code that has been pushed to another public open source repository. This change contains the following new commits: Git commit c50d1635fe651c7bcad08405555cf0673dfaa3d0 by GitHub (on behalf of Matt Arsenault) on 24/07/2026 at 17:13.. clang/AMDGPU: Migrate cc1 tests to subarch triples (4) (#211839) Rewrite Headers cc1 test RUN lines to the new subarch triple form, dropping the redundant -target-cpu, and regenerate autogenerated CHECK lines. Co-authored-by: Claude (Opus 4.8) <[email protected]> https://invent.kde.org/qt/clang/llvm/-/commit/c50d1635fe651c7bcad08405555cf0673dfaa3d0 Git commit aafd116191c66625e75ca8efac0281e7c52e39c5 by GitHub (on behalf of Justin Cady) on 24/07/2026 at 17:17.. [compiler-rt] FreeBSD kernel headers in baremetal libprofile (#211278) Add conditional FreeBSD kernel headers when building baremetal profile library. This is unconnected to a CMake target; it requires building libprofile out of band with `-DCOMPILER_RT_PROFILE_BAREMETAL=1` and `-I/usr/src/sys/sys`. The headers replaced in this diff are not available when building for FreeBSD kernel space. This is the first issue I hit when experimenting with using the baremetal libprofile like this, so there may be other changes required as I make progress. https://invent.kde.org/qt/clang/llvm/-/commit/aafd116191c66625e75ca8efac0281e7c52e39c5 Git commit 11996d6729d34881841dd0dcb3a27c46c26bb05c by GitHub (on behalf of Sean Clarke) on 24/07/2026 at 17:20.. [HashRecognize] Fix compiler hang on dense use-def chain (#211711) When `digRecurrence` checks the use-def chain for a binary operator, it simply uses a worklist to check the operands of each instruction. If there are many instructions, and most instructions have multiple uses, this takes exponentially long to compute, and can hang the compiler. Use a visited set to skip instructions that have already been visited in the use-def chain. Credit to @freaknbigpanda for discovering this bug. https://invent.kde.org/qt/clang/llvm/-/commit/11996d6729d34881841dd0dcb3a27c46c26bb05c Git commit 995e2af5351507d2fc627398fc4d03b9a060b105 by GitHub (on behalf of lntue) on 24/07/2026 at 17:31.. [libc][termios] Make termios hermetic and fix its compatibility with glibc 2.42 or after. (#211039) Make termios hermetic and address its compatibility with glibc 2.42 breaking change with baud rate definitions: https://inbox.sourceware.org/libc-announce/5906001.DvuYhMxLoT@pinacolada/T/ Fixes include: - Baud rate translation utilities. - Add proxy headers for termios.h macros and types. - Update tests. Assisted-by: Gemini 3.5 Flash. https://invent.kde.org/qt/clang/llvm/-/commit/995e2af5351507d2fc627398fc4d03b9a060b105 Git commit 0db9f599c087cf4d6344223d1a62a81d6308c82a by GitHub (on behalf of Ron Green [NVIDIA]) on 24/07/2026 at 17:34.. [flang][OpenACC] Don't rebind construct entities to enclosing variables (#210775) `AccAttributeVisitor::Post(Name)` "adjusts" every name referenced inside an OpenACC region to the symbol found in the current scope. A construct entity -- a `DO CONCURRENT`/`FORALL` index-name, or a variable declared in a `BLOCK` construct -- lives in its own scope nested within the region, but the visitor's current scope does not descend into that construct scope. `FindSymbol` therefore resolves the name to a like-named variable in an enclosing scope and rebinds the reference to it. When such an entity shadows an enclosing DO variable and the loop is associated with an OpenACC construct, this makes the entity alias that active DO variable, so referencing or defining it wrongly triggers "Cannot redefine DO variable" -- even though the code is legal and compiles without error when OpenACC is disabled. This affected a `DO CONCURRENT` index-name as well as a variable declared in a `BLOCK` construct nested in the loop, e.g.: ```fortran do i = 1, m !$acc parallel loop gang vector collapse(2) independent do concurrent (j = 1:n, ii = 1:m) block integer :: i ! shadows the enclosing `do i` i = ii a(i,j) = b(i,j) end block end do end do ``` Skip the adjustment when the resolved symbol is owned by a scope contained in the current scope, i.e. it was declared within the region; name resolution already bound it correctly. The `DO CONCURRENT` induction variables are then privatized as their own construct-local entities rather than the shadowed enclosing variable, as reflected in the updated `acc-loop.f90` lowering test. Add a Semantics regression test covering the `DO CONCURRENT` and `BLOCK` cases. https://invent.kde.org/qt/clang/llvm/-/commit/0db9f599c087cf4d6344223d1a62a81d6308c82a Git commit 20bf56436bbf50323a3f639cc6261f45a9b48ba0 by GitHub (on behalf of mleair) on 24/07/2026 at 17:35.. [flang] Fix host association for ASYNCHRONOUS/VOLATILE in submodules (#211669) In `HandleAttributeStmt`, when an `ASYNCHRONOUS` or `VOLATILE` statement names a variable not already in the current scope, flang creates a host-association symbol — but only for `Subprogram` and `BlockConstruct` scopes. Submodule scopes have kind `Module`, so the check excluded them. This caused a fresh `EntityDetails` symbol (zero-initialized) to be created instead of a `HostAssocDetails` symbol pointing at the ancestor module variable, producing value 0 instead of the initialized value. Fix: extend the condition to also fire when `currScope().IsSubmodule()`. `Scope::FindSymbol` already traverses into the parent module for submodules, so the host variable is found correctly. Note: the `volatile`/`asynchronous` `fortran_attrs` are not propagated to `hlfir.declare` for host-associated variables in general (subprograms, BLOCK constructs, and submodules); that is a separate lowering issue tracked in #208588. Fixes #208362 Assisted-By: AI https://invent.kde.org/qt/clang/llvm/-/commit/20bf56436bbf50323a3f639cc6261f45a9b48ba0 Git commit b669674e0d05ba4b6a8cc1e7a56771a0dfa16628 by GitHub (on behalf of Krzysztof Parzyszek) on 24/07/2026 at 17:36.. [flang] Add missing std includes (#211830) Addressing post-commit review comments for https://github.com/llvm/llvm-project/pull/211326. https://invent.kde.org/qt/clang/llvm/-/commit/b669674e0d05ba4b6a8cc1e7a56771a0dfa16628 Git commit b71410f77075783badb0b4546bda6e769e32f979 by GitHub (on behalf of Ayokunle Amodu) on 24/07/2026 at 17:38.. [CIR][CUDA] Add support for NVVM ldu builtins (#211843) Adds CIR codegen support for the NVVM global uniform load builtins `nvvm_ldu_*` ,including the integer, floating-point, and vector variants. These are lowered to the corresponding `llvm.nvvm.ldu.global.*` intrinsics based on the pointee type. https://invent.kde.org/qt/clang/llvm/-/commit/b71410f77075783badb0b4546bda6e769e32f979 Git commit befa7e23a53f76dfd791b18175b744115affe627 by GitHub (on behalf of Matt Arsenault) on 24/07/2026 at 17:41.. AMDGPU: Handle ISD::POISON in fp16SrcZerosHighBits and isCanonicalized (#211831) https://invent.kde.org/qt/clang/llvm/-/commit/befa7e23a53f76dfd791b18175b744115affe627 Git commit 91953462055632b16218cb13e463b0a24f2abf94 by GitHub (on behalf of Matt Arsenault) on 24/07/2026 at 17:49.. AMDGPU: Validate processor is consistent with subarch in TargetID parsing (#211828) TargetID::parse checked that a named processor was a recognized GPU, but not that it was consistent with the triple's subarch. A target id like "amdgpu9.00-amd-amdhsa--gfx803" was accepted even though gfx803 does not belong to the amdgpu9.00 subarch, silently taking the processor and ignoring the mismatched subarch. Co-authored-by: Claude (Opus 4.8) <[email protected]> https://invent.kde.org/qt/clang/llvm/-/commit/91953462055632b16218cb13e463b0a24f2abf94 Git commit ea1728a13303f76c4a26d60bc9451f440bcdbd0d by GitHub (on behalf of Jonas Devlieghere) on 24/07/2026 at 17:56.. [lldb] Classify embedded formatter sections in WebAssembly objects (#211704) A `section` attribute on a data variable is placed in a named data segment on WebAssembly rather than a top-level custom section, so the .lldbformatters and .lldbsummaries segments that carry embedded data formatters were classified as plain data. The data-formatter loader looks these up by section type, so embedded summaries and synthetic child providers were never registered for a Wasm module. Map the two formatter segment names to their section types when creating sections, and place the segments in linear memory like other data so their contents resolve. This mirrors the ELF and Mach-O object file plugins. Assisted-by: Claude https://invent.kde.org/qt/clang/llvm/-/commit/ea1728a13303f76c4a26d60bc9451f440bcdbd0d Git commit 6edec6dcbbba32f76c1fe32b4ec2994983551cbd by GitHub (on behalf of Ramkumar Ramachandra) on 24/07/2026 at 18:01.. [VPlan] Endow DerivedIV with IRFlags (#205908) Endow DerivedIV with no-wrap flags that are used in all adds and muls: the FP induction can still get the FastMathFlags from the FPBinOp. The patch changes vputils::createScalarIVSteps where no-wrap flags are applicable. GEP no-wrap flags are missing nearly everywhere, and is left to an exercise for a follow-up. Proof: https://alive2.llvm.org/ce/z/rHtwEH + https://alive2.llvm.org/ce/z/h297HG for a larger UF on one test https://invent.kde.org/qt/clang/llvm/-/commit/6edec6dcbbba32f76c1fe32b4ec2994983551cbd Git commit 15bb4a97a798ed43b3966c99d37585651b965e5e by GitHub (on behalf of Ramkumar Ramachandra) on 24/07/2026 at 18:02.. [IR] Make semantics of strictfp consistent v2 (#211769) Changes: The patch was originally landed as af0c933e (#209465), but there was an issue with strictfp functions being inlined into non-strictfp functions. The issue has since been resolved by a2b42b10a ([IR] Reject inlining strictfp alwaysinline callee into non-strictfp caller, #210701) and the re-land is identical. Although the section on constrainedfp in the LangRef clearly states "All function definitions that use constrained floating point intrinsics must have the strictfp attribute", indicating that a function with strictfp calls must be marked with strictfp, the general description of strictfp does not specify this. Refine its semantics and make it so, eliminating the inconsistency. https://invent.kde.org/qt/clang/llvm/-/commit/15bb4a97a798ed43b3966c99d37585651b965e5e Git commit e200ea609b9292ab7bfe5c0eb67a6e4cea5677cc by GitHub (on behalf of ivanrodriguez3753) on 24/07/2026 at 18:12.. [flang][semantic] parser node types and rewrite for assumed-shape-bounds-spec (#211690) https://invent.kde.org/qt/clang/llvm/-/commit/e200ea609b9292ab7bfe5c0eb67a6e4cea5677cc Git commit de4b1f5572f8ff5a38a17655584ae200774551c6 by GitHub (on behalf of Osama Abdelkader) on 24/07/2026 at 18:23.. [Clang] Avoid querying tag definitions for invalid DeclSpecs (#210085) Guard hasTagDefinition() against invalid type-specifier state so recovery from invalid auto/tag combinations does not assert. Fixes #210014 --------- Signed-off-by: Osama Abdelkader <[email protected]> https://invent.kde.org/qt/clang/llvm/-/commit/de4b1f5572f8ff5a38a17655584ae200774551c6 Git commit 8231fda982ba419bc8ac05a45ec752e00218db8b by GitHub (on behalf of Alex Langford) on 24/07/2026 at 18:23.. [lldb] Remove ConstString from FileSpec (#211394) This commit completely removes ConstString from FileSpec, replacing it with llvm::SmallString instead. I considered combining the directory and the filename together into one field, but then it became impossible to distinguish between a partially-constructed FileSpec's last directory and a fully-constructed FileSpec's filename. The sizes of the SmallStrings are somewhat arbitrary. I tested out a few other configurations on my machine locally and this yielded the best memory/runtime tradeoffs. I measured the impact of this change in two ways: (1) Runtime performance I measured the runtime impact by using LLDB's statistics with `stat enable` and `stat dump -f` (forcing the parsing of symbols) for a debug build of Clang. The debug clang was compiling a small C++ file. Before: totalSymbolTableParseTime=1.4979959999999999 After: totalSymbolTableParseTime=1.1327570000000002 (2) Memory footprint/allocations I used Instruments on macOS to measure this the same workload as above. Footprint Before: Total/Persistent: 3.78GiB / 1.14 GiB After: Total/Persistent: 3.67GiB / 1.08 GiB Num. Allocations Before: Total/Persistent: 5,706,146 / 1,283,623 After: Total/Persistent: 5,710,023 / 1,284,083 https://invent.kde.org/qt/clang/llvm/-/commit/8231fda982ba419bc8ac05a45ec752e00218db8b Git commit eedb658af3cc1598e1a6e3a41ceb7100f84c6797 by GitHub (on behalf of Florian Hahn) on 24/07/2026 at 18:34.. [ConstraintElim] use condition from latch in addInfoForInductions. (#210984) Also use condition in latch to inject %iv <= %B and co into the header, if the latch condition compares a post-inc IV like %iv + %step != %B. This allows reasoning about loops that have been rotated before ConstraintElimination, e.g. during the LTO phase or Swift where the frontend already rotates loops before generating LLVM IR. Alive2 Proof for injecting %iv <= B from %iv + %step != %B in latch: https://alive2.llvm.org/ce/z/pH8Czb This enables a number of additional simplifications in practice (https://github.com/dtcxzyw/llvm-opt-benchmark-nightly/pull/736). It comes with a compile-time impact when doing LTO, as all loops will be rotated and will hit the new code path. * stage1-ReleaseThinLTO: +0.08% * stage1-ReleaseLTO-g: +0.06% https://llvm-compile-time-tracker.com/compare.php?from=697e904cbd93033d61dd95c4868a137a87e7d0f9&to=396e9eb79147231dd615edc65bd6bdac115325c1&stat=instructions:u But together with the recent improvement to the solver (https://github.com/llvm/llvm-project/pull/210432), we are still 0.09%/0.12% faster than previously. PR: https://github.com/llvm/llvm-project/pull/210984 https://invent.kde.org/qt/clang/llvm/-/commit/eedb658af3cc1598e1a6e3a41ceb7100f84c6797 Git commit 044a1d9743a1484ef8b8282454a4fa61dfbc2b44 by GitHub (on behalf of Jonas Devlieghere) on 24/07/2026 at 18:40.. [lldb] Recover a WebAssembly function's mangled name from its declaration (#211707) The Wasm "name" section stores only demangled names, so SymbolFileWasm recovers each function's mangled name from the DWARF and attaches it to the code symbol. Currently, it only does so from a defining DIE, matched by address. When we only have a declaration DIE (e.g. TU compiled without debug info), it still carries the linkage name, but wouldn't get associated without the address. Match a declaration-only DIE to its code symbol by the demangled name that the name section already carries, and attach the linkage name that way. Assisted-by: Claude https://invent.kde.org/qt/clang/llvm/-/commit/044a1d9743a1484ef8b8282454a4fa61dfbc2b44 Git commit 75a1d31c69c98eeb236d8bf954d709b271fcb55a by GitHub (on behalf of Guo Chen) on 24/07/2026 at 18:40.. [AMDGPU] revert srl pattern for true16 mode (#208136) revert https://github.com/llvm/llvm-project/pull/132987. Revert this patch since it create side effects when register coalescer join large number of imm `copy`. This patch is on top of https://github.com/llvm/llvm-project/pull/208045 and share the root cause https://invent.kde.org/qt/clang/llvm/-/commit/75a1d31c69c98eeb236d8bf954d709b271fcb55a Git commit 3b87272648f483c6b0763b44e8cb4b470283b7d5 by GitHub (on behalf of Alexis Engelke) on 24/07/2026 at 18:41.. [MC][NFC] Remove some virtual function from MCAsmInfo (#211858) The MCAsmInfo vtable is currently 144B (no anchor)/152B (anchor) large -- and there are 49 of these in an all-target libLLVM.so. Some of these are not needed or can be easily removed. This removes 5 vtable entries. Some notes on the remaining functions -- I think this vtable can be removed entirely without too much effort: - getStackSection can also be removed, this is ELF-only; unfortunately this will require code duplication between AsmPrinter and MCELFStreamer. - getExprForPersonalitySymbol is single-use and two-overrides (Darwin on x86-64, AArch64), likely removable. - shouldOmitSectionDirective has three override modes -- COFF (disallow for COMDAT/unique section), AMDGPU (4 .hsa sections), and always-omit (NVPTX, SPIRV). This is only called from printSwitchToSection, so COFF is no problem, always-omit needs a flag, leaving AMDGPU. - useCodeAlign can probably be replaced by Sec.isText(), although not NFC (e.g. Darwin non-pure instructions). - getMaxInstLength is AMDGPU-only and only used in the disassembler and for estimating inline assembly size. The code can likely be moved to the disassembler, but doing so is not NFC w.r.t. inlineasm. - setUseIntegratedAssembler is ARM-only and only used to workaround a binutils bug that was fixed in 2014. Likely removable, but not NFC. - printSwitchToSection is inherently file-format specific. Maybe replace with a raw function pointer taking MCAsmInfo as parameter? - printSpecifierExpr likewise. - evaluateAsRelocatableImpl likewise. - ~MCAsmInfo -- I don't think any subclass has additional members, but I haven't checked in detail. https://invent.kde.org/qt/clang/llvm/-/commit/3b87272648f483c6b0763b44e8cb4b470283b7d5 Git commit b6c6666b215a35eed4aff58066f6cc462bd26c49 by GitHub (on behalf of aryanmagoon) on 24/07/2026 at 18:47.. [NVPTXAsmPrinter] Allow self-referential device global initializers (#197838) This change adds support for cyclic device global initializers in NVPTX, including self-references and references between distinct globals. The backend’s global-emission ordering walk previously treated every cycle as an error and aborted with “Circular dependency found in global variable set.” As a result, valid patterns such as __device__ void *arr[] = {(void *)"foo", &arr[0]}; were rejected. The NVPTX asm printer now models initializer dependencies as a graph and emits its strongly connected components in dependency-first order. Acyclic components are emitted normally. For cyclic components, it first emits compatible PTX .extern declarations and then emits the definitions in a valid order. Cycles that cannot be represented this way, such as cycles containing only static globals, are still rejected. The forward declarations reuse the normal definition emitter so their address spaces, alignments, types, and aggregate layouts match the definitions. Added new tests to cover self-references, cycles between distinct globals, mixed linkage, packed aggregates, dependency ordering, and unrepresentable static-only cycles. https://invent.kde.org/qt/clang/llvm/-/commit/b6c6666b215a35eed4aff58066f6cc462bd26c49 Git commit 43dbc636d12c3f135059ba555023e6881455df5d by GitHub (on behalf of Matt Arsenault) on 24/07/2026 at 18:52.. AMDGPU: Reject unrecognized amdgpu subarch in TargetID parsing (#211866) A bare "amdgpu" or an unrecognized "amdgpu<x>" both parse to the amdgpu arch with no subarch; TargetID::parse previously accepted them, taking a named processor and ignoring the missing subarch. Reject triples with no subarch, unless it uses the legacy spelling. This is another workaround for Triple not having a proper unknown value for subarches. Co-authored-by: Claude (Opus 4.8) <[email protected]> https://invent.kde.org/qt/clang/llvm/-/commit/43dbc636d12c3f135059ba555023e6881455df5d Git commit 982688d57f285a5f26ace856375571d8f5c77bab by GitHub (on behalf of Matt Arsenault) on 24/07/2026 at 18:53.. clang/AMDGPU: Migrate cc1 tests to subarch triples (5) (#211840) Rewrite OpenMP cc1 test RUN lines to the new subarch triple form, dropping the redundant -target-cpu, and regenerate autogenerated CHECK lines. Tests that intentionally assert the "target-cpu" attribute are left unchanged. Co-authored-by: Claude (Opus 4.8) <[email protected]> https://invent.kde.org/qt/clang/llvm/-/commit/982688d57f285a5f26ace856375571d8f5c77bab Git commit 86769296941811360d7126e41e3b13cbabab55ae by GitHub (on behalf of Louis Dionne) on 24/07/2026 at 18:53.. [libc++][CI] Add a Github workflow to test libc++ tools (#211067) We have a few scripts under libcxx/utils, and they wouldn't be tested on a regular basis. As a result, changes to e.g. the build system could break these scripts, which in turn could break some Github workflows like the libc++ PR benchmarking workflow. This patch adds a new `test-tools` configuration to `run-buildbot` which allows testing these tools locally, and a new dedicated Github workflow to run it. https://invent.kde.org/qt/clang/llvm/-/commit/86769296941811360d7126e41e3b13cbabab55ae Git commit ba61615b653c4f59b3cd3d721291f0b6009b0b51 by GitHub (on behalf of Louis Dionne) on 24/07/2026 at 18:56.. [libc++] Rename pre-commit CI workflows (#211844) Since we're expanding libc++'s pre-commit CI to add other types of tests, (e.g. tools tests, performance tests, etc), it makes sense to be a bit more precise about what each workflow does, and to use a consistent pattern across workflow names. Also, update stale references to old names in the documentation and in some infrastructure scripts. https://invent.kde.org/qt/clang/llvm/-/commit/ba61615b653c4f59b3cd3d721291f0b6009b0b51 Git commit e949b654424beda81ab4db154a72b904c8b32245 by GitHub (on behalf of Pranav Bhandarkar) on 24/07/2026 at 18:56.. [flang][OpenMP] Fix alias analysis for omp.private copy region block arguments to help inline hlfir.assign to improve time taken in LTO. (#209539) ## Summary This PR fixes https://github.com/llvm/llvm-project/issues/200922 - a compile-time regression affecting firstprivate clauses on simple arrays in OpenMP target regions. When `InlineHLFIRAssign` checks whether to inline `hlfir.assign` operations in `omp.private` copy regions, the alias analysis conservatively returns `MayAlias` for the copy region block arguments (`%arg0` mold vs `%arg1` private). This prevents inlining and forces a fallback to `fir.call @_FortranAAssign`, which: - Pulls in 89 runtime functions via LTO - Creates 550K+ abstract attributes in OpenMPOpt - Causes severe compile-time degradation (60%+ increase in some cases) **Example:** ```fortran !$omp target firstprivate(array) ! ... use array ... !$omp end target ``` The firstprivate copy generates an `omp.private` copy region where the assignment from the original array to the private copy cannot be inlined due to conservative aliasing assumptions. ## Root Cause and Solution The FIR alias analysis did not recognize that `omp.private` copy region block arguments are guaranteed by the OpenMP specification to reference different memory locations: - `%arg0` (mold) - the original variable - `%arg1` (private) - freshly allocated private storage created in the init region Since the private copy is allocated fresh, these arguments **cannot alias**. So, this PR adds special-case handling in `flang/lib/Optimizer/Analysis/AliasAnalysis.cpp` to recognize `omp.private` copy region block arguments and correctly return `NoAlias`. This allows `InlineHLFIRAssign` to inline the assignment into an element-wise loop, avoiding the expensive runtime call entirely. Assisted by: Claude Sonnet --------- Co-authored-by: Claude Sonnet 4 <[email protected]> https://invent.kde.org/qt/clang/llvm/-/commit/e949b654424beda81ab4db154a72b904c8b32245 Git commit 8a6a039eb31f33749cfe251a5985b335e9a09681 by GitHub (on behalf of Jianhui Li) on 24/07/2026 at 19:01.. [mlir][xegpu] Allow create_mem_desc from ND memref (#211836) Relax the create_mem_desc source operand constraint to accept a statically shaped shared-memory memref of any rank, replacing the 1D/2D-only StaticShared{1,2}DMemRefOf classes with a rank-agnostic StaticSharedMemRefOf. Add a verifier requiring the source memref to be contiguous row-major, update the op documentation, and add valid/invalid lit tests. assisted-by-claude Co-authored-by: Claude Opus 4.8 <[email protected]> https://invent.kde.org/qt/clang/llvm/-/commit/8a6a039eb31f33749cfe251a5985b335e9a09681 Git commit 0f7854f4a3f2000ab11d5c5f153eaef05442e263 by GitHub (on behalf of Roland McGrath) on 24/07/2026 at 19:04.. [clang][Fuchsia] Add __Fuchsia_Compiler_ABI__ predefine (#211744) This establishes a new canonical predefine for *-fuchsia targets: `__Fuchsia_Compiler_ABI__` is set to an integer for the version number of the Fuchsia Compiler ABI the compiler supports. The value will change as appropriate with changes to *-fuchsia target ABI expectations. It is not anticipated that the compiler will support selecting target ABI versions, only the latest as the canonical target-specific behavior. Fuchsia Compiler ABI versions are unrelated to the Fuchsia API levels supported by Fuchsia systems; newly-built programs may target older API levels with `-ffuchsia-api-level`, but everything relying on the Fuchsia Compiler ABI is built and deployed together as an isolated unit. https://invent.kde.org/qt/clang/llvm/-/commit/0f7854f4a3f2000ab11d5c5f153eaef05442e263 Git commit 45ccbd4eb6c0411b5edaf8df425c71816e76aa70 by GitHub (on behalf of Matt Arsenault) on 24/07/2026 at 19:05.. AMDGPU: Don't pack a build_vector with an undef/poison lane (#211871) Once ISD::POISON is legal it reaches isel and is treated as canonical, so is_canonicalized_2<build_vector> matched build_vector<x, poison> and selected a v_pack for a don't-care high lane. Avoids regressions in future patches. Co-authored-by: Claude (Claude-Opus-4.8) https://invent.kde.org/qt/clang/llvm/-/commit/45ccbd4eb6c0411b5edaf8df425c71816e76aa70 Git commit 5b741ef515c010bebefb648fb030cbcc5d5ae744 by GitHub (on behalf of Matt Arsenault) on 24/07/2026 at 19:06.. AMDGPU: Avoid dropping poison when extracting a high element (#211872) Haven't found a case where this matters, but I want to stop finding this instance of the is-undef-get-undef pattern. https://invent.kde.org/qt/clang/llvm/-/commit/5b741ef515c010bebefb648fb030cbcc5d5ae744 Git commit c47330bc0a3d9484520991c80f6d6f2f3b705d09 by Matt Arsenault on 24/07/2026 at 19:06.. DAG: Stop legalizing poison to undef Previously all targets would expand poison to undef, which was a shortcut taken when poison was introduced. Introduces a new dedicated poison matcher in tablegen; this avoids multiple opcode changes, and avoids some problematic contexts that couldn't deal with PatFrags. This probably should be legal by default for all legal types. Co-authored-by: Claude (Claude-Opus-4.8) https://invent.kde.org/qt/clang/llvm/-/commit/c47330bc0a3d9484520991c80f6d6f2f3b705d09