[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/amdgpu/use-ProcessorAlias'.
Changed from 4117603aef793ac62806ad8f0244892a89651112 to a312dfbfad81c68eb8fe9bbb5ffeda735ddc5ff2
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 fca20bc99b4107cc5e766fcdbe01f5dd02e6db57 by GitHub (on behalf of forking-google-bazel-bot[bot]) on 24/07/2026 at 19:16..
[Bazel] Fixes 8a6a039 (#211892)

This fixes 8a6a039eb31f33749cfe251a5985b335e9a09681 (#211836).

Buildkite error link:
https://buildkite.com/llvm-project/upstream-bazel/builds?commit=8a6a039eb31f33749cfe251a5985b335e9a09681

Co-authored-by: Google Bazel Bot <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/fca20bc99b4107cc5e766fcdbe01f5dd02e6db57

Git commit 8e76c3f0d29a713c41f1b3d0f19d965a504481cf by GitHub (on behalf of Florian Hahn) on 24/07/2026 at 19:20..
[SCEV] Use SCEVPtrToAddr instead of SCEVPtrToInt in SCEV. (#180244)

Use SCEVPtrToAddr instead of SCEVPtrToInt for pointer -> int
conversion in SCEV, like when computing trip count expressions.

getPtrToIntExpr now also creates SCEVPtrToAddrExpr.

Removal of SCEVPtrToIntExpr out of this PR, to limit the scope and
will be done as NFC follow-up.

PR: https://github.com/llvm/llvm-project/pull/180244
https://invent.kde.org/qt/clang/llvm/-/commit/8e76c3f0d29a713c41f1b3d0f19d965a504481cf

Git commit f0be938ce6df68f2fec85edb6aa74438b0d3f25c by GitHub (on behalf of Michael Halkenhäuser) on 24/07/2026 at 19:32..
[AMDGPU] Fix instruction size of LDS-DMA buffer loads (#211302)

Mark i1imm_0 as OPERAND_IMMEDIATE type, so its packed 1-bit value is not
mistaken for a trailing literal (same for InstFlag).
Applies to the swz/IsAsync fields of buffer (MUBUF) and FLAT LDS-DMA
instructions.
Changes estimated size for the corresponding instructions; codegen stays
untouched.

Add unit test, checking encoded size is 8 bytes (was: 12).

AI-assisted.
https://invent.kde.org/qt/clang/llvm/-/commit/f0be938ce6df68f2fec85edb6aa74438b0d3f25c

Git commit f61e1fac80cfda6af7ef615a0eb84d58d3c56105 by GitHub (on behalf of Ikhlas Ajbar) on 24/07/2026 at 19:56..
[Pipeliner] Use VRMapPhi to generate phi in epilog (#211723)

When generating a phi in the epilog block corresponding to an existing
phi in the loop, the loop value should come from the new phi generated
in the kernel block (for a non-phi instruction in the loop) rather than
directly from the value map of the previous stage.

The new phis generated by generatePhis for non-phi instructions are
stored in VRMapPhi. Thread VRMapPhi through generateExistingPhis and add
a helper getMapPhiReg that returns the phi-generated register when
available, falling back to VRMap otherwise.

Without this fix, the epilog can pick up the initial prolog value of a
loop-carried register instead of the last kernel-iteration value,
producing incorrect results for pipelined loops with two or more stages
that carry values across iterations. This has been observed on Hexagon
with the modulo scheduled epilog of a right-shift-with-carry loop after
loop unrolling.

Fixes #208943
https://invent.kde.org/qt/clang/llvm/-/commit/f61e1fac80cfda6af7ef615a0eb84d58d3c56105

Git commit 9d7095fb7897abbc71e4a708b54a6381b07e7d2e by GitHub (on behalf of Valentin Clement (バレンタイン クレメン)) on 24/07/2026 at 19:57..
[flang][cuda] Use cuf.register_variable_static instead of CUFRegisterExternalVariable (#211886)

This gives more flexibility to the backend to select a different
registration mechanism
https://invent.kde.org/qt/clang/llvm/-/commit/9d7095fb7897abbc71e4a708b54a6381b07e7d2e

Git commit 3e584cc4de0492dd1460b9734621d569efb6b9f7 by GitHub (on behalf of Pranav Bhandarkar) on 24/07/2026 at 19:59..
[flang-rt] - Reduce ShallowCopy template instantiations to improve LTO time (#209915)

Limit `ShallowCopy` rank specializations from 1-15 to 1-4, using a
generic fallback for higher ranks. This significantly reduces code size
and LTO compile time when the Fortran runtime is linked into GPU
offloading code.

Before: 15 ranks × 7 types × 3 scenarios = 315 template instantiations
After: 4 ranks × 7 types × 3 scenarios = 84 template instantiations +
fallbacks

Trade-off: Arrays with rank > 4 use a generic runtime loop instead of
compile-time specialized iteration. This is acceptable because:
- Most real-world Fortran arrays are rank 1-3
- Rank 5-15 arrays are rare in practice
- The generic loop is still efficient (just not unrollable)
## Results

### Compilation Time (from `time` command)

| Metric | Baseline (main) | Improvement | Delta |
|--------|----------------|-------------|-------|
| Wall clock time | ~27.6s | ~22.1s | **-5.5s (-20%)** |

### LTO Pass Timing (from `-mllvm -time-passes`)

| Pass | Baseline (main) | Improvement | Delta |
|------|----------------|-------------|-------|
| **Total LTO** | 27.64s | 22.10s | **-5.54s (-20.0%)** |
| OpenMPOptPass | 8.77s (31.7%) | 6.65s (30.1%) | **-2.12s (-24.2%)** |
| OpenMPOptCGSCCPass | 2.32s (8.4%) | 1.99s (9.0%) | **-0.33s (-14.2%)**
|
| **Combined OpenMPOpt** | **11.09s** | **8.64s** | **-2.45s (-22.1%)**
|

### Attributor Statistics (from `-mllvm -stats`)

| Metric | Baseline (main) | Improvement | Delta |
|--------|----------------|-------------|-------|
| Abstract Attributes Created | 1,119,860 | 813,947 | **-305,913
(-27.3%)** |
| Abstract Attributes in Valid Fixpoint | 491,995 | 359,149 | **-132,846
(-27.0%)** |
| Dead Basic Blocks Deleted | 6,522 | 2,168 | -4,354 (-66.8%) |



This is the first part of a multi-part fix for
https://github.com/llvm/llvm-project/issues/203915

Assisted by Claude.

---------

Co-authored-by: Claude Sonnet 4 <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/3e584cc4de0492dd1460b9734621d569efb6b9f7

Git commit 0c98cadcc9a2f370fe2d074dfea556bf0b4a61ac by GitHub (on behalf of Ethan Luis McDonough) on 24/07/2026 at 20:15..
[Instrumentor] Improve filtering for flag values (#206667)

This pull request modifies the instrumentor's filter expression parser.
It introduces the logical not operator (`!`), flag property access (e.g.
`flags.nuw`), and binary literals.
https://invent.kde.org/qt/clang/llvm/-/commit/0c98cadcc9a2f370fe2d074dfea556bf0b4a61ac

Git commit 4669e217488dc5bcb2b68f30dd57f845ee6baa71 by GitHub (on behalf of Yonah Goldberg) on 24/07/2026 at 20:18..
[LangRef] Rewrite the elementwise atomic description and reject seq_cst elementwise atomics (#209931)

This is a follow-up on the discussion here:
https://github.com/llvm/llvm-project/pull/204329

The problem with specifying `seq_cst` on `elementwise `atomics is that
the LangRef states:

> there is a global total order on all sequentially-consistent
operations on all addresses.

But the individual accesses of `elementwise` `seq_cst` atomics are not
consistent, which contradicts this. I think we could refine this in the
future, but start off by saying `seq_cst` is not permitted.

I think my clarification of the LangRef makes the following example
clearer:

```
// thread 0
store non-atomic [x]
store elementwise atomic release [flag0, flag1] , <1, 1> // writes one to each flag

// thread1
load atomic acquire flag0 == 1
load non-atomic [flag1]
```

there is no execution in which loading from `flag1` in the end is NOT a
data race because there is no consistent ordering of the stores of
`flag0` and `flag1` and therefore acquiring `flag0` does not give us any
information on `flag1`.

My understanding is that in the formal spec working group (which I
should probably attend) people were unsure about allowing
`acquire`/`release`/`acq_rel` on `elementwise`.

This refinement makes the specification of these orderings more formalized.
https://invent.kde.org/qt/clang/llvm/-/commit/4669e217488dc5bcb2b68f30dd57f845ee6baa71

Git commit 0bd97165f72d0a6a03c3c7cb87af602edab9eb5a by GitHub (on behalf of Krzysztof Parzyszek) on 24/07/2026 at 20:20..
[flang][OpenMP] Use llvm::omp::ClauseSet in modifier verification (#211900)

It's a trivial type substitution.
https://invent.kde.org/qt/clang/llvm/-/commit/0bd97165f72d0a6a03c3c7cb87af602edab9eb5a

Git commit d3f58f9efd3e91824bc496e6fac80bad6d0db8f2 by GitHub (on behalf of Jonas Devlieghere) on 24/07/2026 at 20:24..
[DebugInfo][WebAssembly] Anchor stack locals to the frame base (#211826)

WebAssembly's stack pointer is not a register that can be described in
DWARF. When a function has no virtual frame base, because its stack
pointer is never explicitly referenced (e.g. a function whose only local
is dead), the frame base falls back to the __stack_pointer global and
the frame register is the physical SP.

addMachineReg failed for that register, so addMachineRegExpression
dropped the base and the caller emitted the frame offset with nothing
under it: a bare DW_OP_plus_uconst that underflows the DWARF stack when
the location is evaluated.

```
  DW_AT_frame_base (DW_OP_WASM_location 0x3 0x0, DW_OP_stack_value)
    DW_AT_location  (DW_OP_plus_uconst 0xc)   ;; before
    DW_AT_location  (DW_OP_fbreg +12)         ;; after
```

A frame-relative location does not need the frame register to be
describable on its own, since it is anchored through DW_AT_frame_base
and DW_OP_fbreg. Take the same path already used for a virtual frame
register so a physical one without a DWARF number is handled too.

Assisted-by: Claude

PS: I also updated the frame-base fallback comment in
WebAssemblyFrameLowering: reads now work at the innermost frame, and the
remaining limitation is that the __stack_pointer global does not
describe outer frames.
https://invent.kde.org/qt/clang/llvm/-/commit/d3f58f9efd3e91824bc496e6fac80bad6d0db8f2

Git commit 5d341df8a377d6acab922b9e4525ccd58d50cc7a by GitHub (on behalf of Florian Hahn) on 24/07/2026 at 20:43..
[CVP] Add tests for single-user result refinement. (NFC) (#211901)

Extra tests for https://github.com/llvm/llvm-project/pull/211668.
https://invent.kde.org/qt/clang/llvm/-/commit/5d341df8a377d6acab922b9e4525ccd58d50cc7a

Git commit 2ac96dbb3a08baf4d72584e04e6ad299c176fcce by GitHub (on behalf of Florian Hahn) on 24/07/2026 at 20:45..
[SCEV] Add missing scPtrToAddr to getCastExpr. (#211899)

https://github.com/llvm/llvm-project/pull/180244 (8e76c3f0d29) missed
adding scPtrToAddr to getCastExpr, causing `Not a SCEV cast expression!`
on some of the AMDGPU bots, including
 https://lab.llvm.org/buildbot/#/builders/10/builds/32555.

Add missing case to handle PtrToAddr.
https://invent.kde.org/qt/clang/llvm/-/commit/2ac96dbb3a08baf4d72584e04e6ad299c176fcce

Git commit 39df67d0edef62294b177c97124d0ffc3eec3118 by GitHub (on behalf of Jeff Bailey) on 24/07/2026 at 20:49..
[libc] Add missing sys/types.h integer and BSD/System V type definitions (#211861)

Add missing type definitions to llvm-libc-types and sys/types.yaml:

* POSIX standard types: id_t, useconds_t
* BSD and System V compatibility typedefs: caddr_t, u_int, u_int8_t,
u_int16_t, u_long, u_short, ulong, ushort
* Large File Support (LFS) and Linux kernel internal types: ino64_t,
off64_t, __off_t, __off64_t, __uint64_t

POSIX.1-2017 defines id_t and useconds_t in sys/types.h. The BSD and
System V standards specify the legacy unsigned integer shorthand types,
and Linux kernel/glibc interfaces use the double-underscore prefix
offset and integer types.

Assisted-by: Automated tooling, human reviewed.
https://invent.kde.org/qt/clang/llvm/-/commit/39df67d0edef62294b177c97124d0ffc3eec3118

Git commit b545f9ff454b185278046edb725cb5fe20b8a620 by GitHub (on behalf of Jeff Bailey) on 24/07/2026 at 20:59..
[libc] Add missing standard and Linux header macros (#211862)

Add missing header macro constants:

* endian-macros.h: __BYTE_ORDER, __LITTLE_ENDIAN, and __BIG_ENDIAN
* sys-stat-macros.h: S_IREAD, S_IWRITE, S_IEXEC, and ACCESSPERMS
* limits-macros.h: _POSIX_HOST_NAME_MAX and HOST_NAME_MAX
* unistd-macros.h: TEMP_FAILURE_RETRY

POSIX.1-2017 specifies _POSIX_HOST_NAME_MAX as 255. The Linux
gethostname(2) man page specifies HOST_NAME_MAX as 64. The
double-underscore byte order macros and TEMP_FAILURE_RETRY macro follow
the Linux and GNU C library conventions.

Assisted-by: Automated tooling, human reviewed.
https://invent.kde.org/qt/clang/llvm/-/commit/b545f9ff454b185278046edb725cb5fe20b8a620

Git commit c20b302c75024e9dcf5e1bffb6e1a57ef20520b1 by GitHub (on behalf of David Green) on 24/07/2026 at 21:00..
[AArch64] Add a OPERAND_IMM_UINT4p1 operand type (#211925)
https://invent.kde.org/qt/clang/llvm/-/commit/c20b302c75024e9dcf5e1bffb6e1a57ef20520b1

Git commit 29210021a3e792527ea546895d23a6a0db218fab by GitHub (on behalf of Joseph Huber) on 24/07/2026 at 21:07..
[libc] Small correctness tweaks to GPU allocator (#211610)

Summary:
Small bugs, like more strict C++ lifetime ordering for the header and
fixing a bug in alignment sizing.
https://invent.kde.org/qt/clang/llvm/-/commit/29210021a3e792527ea546895d23a6a0db218fab

Git commit 8ba8c16cde64c0c9c33e73fea8d75a19a748cede by GitHub (on behalf of c4x64) on 24/07/2026 at 21:13..
[tsan][ppc64] Fix copy-paste bug in __sigsetjmp OPD TOC loading (#210589)

In `__sigsetjmp`'s big-endian OPD path, the TOC was loaded from
`_setjmp`'s OPD entry instead of `__sigsetjmp`'s own entry, due to a
copy-paste error.

```diff
-        addis   r2,r2,_setjmp-1b@ha
-        addi    r2,r2,_setjmp-1b@l
+        addis   r2,r2,__sigsetjmp-1b@ha
+        addi    r2,r2,__sigsetjmp-1b@l
```

This caused an incorrect TOC pointer to be loaded on big-endian PPC64
when `__sigsetjmp`/sigsetjmp was intercepted by TSan. The corresponding
`_setjmp` path (which uses label `0b`) correctly references its own
symbol for the OPD lookup.

Co-authored-by: pmr <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/8ba8c16cde64c0c9c33e73fea8d75a19a748cede

Git commit 8e34b2cbb06a14fd9b38625eccf7fdb482ea5ea3 by GitHub (on behalf of Jon Roelofs) on 24/07/2026 at 21:17..
[libunwind][arm64e] Mach-O Support unwinding PAuth_LR frames (#202772)

Under PAuth_LR, compact unwind entries marked UNWIND_ARM64_MODE_FRAME_PAUTH_LR are signed with the PC of the pacibsppc at the start of the range. The compiler may emit those entries with UNWIND_IS_NOT_FUNCTION_START when the pacibsppc is not the first instruction in the function; the unwinder must scan backwards past such entries to find the actual function start (and its LSDA pointer).

When unwinding a PAuth_LR frame, authenticate and re-sign using setIPPAuthLR(), which calls __builtin_ptrauth_auth_with_pc_and_resign when available, falling back to inline asm (autib171615 + pacib) for compilers that lack the builtin.

To reduce the size of Compact Unwind entries for shrinkwrapped frames, new offset bits encode the distance in multiples of 4 bytes from the range start to the pacibsppc. The compiler emits paired FRAMELESS/FRAMELESS+PAUTH_LR entries that the linker merges into a single FRAME_PAUTH_LR | (offset/4) << 12 encoding.

rdar://161907302&169746432&171118419
https://invent.kde.org/qt/clang/llvm/-/commit/8e34b2cbb06a14fd9b38625eccf7fdb482ea5ea3

Git commit 84b931c00ff5987ed686fef6933c709902380337 by GitHub (on behalf of Cyrus Ding) on 24/07/2026 at 21:20..
Fix clang-doc crash when comment contains invalid UTF-8 bytes (#210886)

When a source file comment contains non-UTF-8 bytes (e.g., byte 0x97),
clang-doc's JSONGenerator would crash with an assertion failure:

  Assertion `false && "Invalid UTF-8 in value used as JSON"' failed.

This happens because json::Value(StringRef) asserts on invalid UTF-8
input in debug builds. While the release-build path calls fixUTF8()
automatically, the assertion crash affects developers and fuzzer runs.

Fix by following the same pattern used elsewhere in LLVM (lldb, clangd):
check isUTF8() before constructing a json::Value, and call fixUTF8() to
sanitize the string if invalid bytes are detected. This avoids an
unnecessary copy for the common case of valid UTF-8.

The fix covers all paths in serializeComment() where user-written text
from source comments enters JSON objects:
  - CK_TextComment (I.Text)
  - CK_InlineCommandComment (I.Args)
  - CK_VerbatimBlockLineComment / CK_VerbatimLineComment (I.Text)
  - CK_Unknown (I.Text)

Also add a regression test with an actual invalid UTF-8 byte in a
comment.

AI assistance was used for code review analysis and local build
verification.

Fixes: https://github.com/llvm/llvm-project/issues/210675

---------

Co-authored-by: Chenguang Ding <[email protected]>
Co-authored-by: Claude <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/84b931c00ff5987ed686fef6933c709902380337

Git commit d3bddd715b4238e6305cbe5a22aa4cc268e9428a by GitHub (on behalf of Zhen Wang) on 24/07/2026 at 21:23..
[flang-rt][cuda] Keep device-context cleanup probe from leaking a last-error (#211910)

The CUDA device runtime probes primary-context state during scope-exit
cleanup via a one-time
cudaGetDriverEntryPoint(`cuDevicePrimaryCtxGetState`) lookup. On some
runtime/driver combinations (e.g. a CUDA runtime newer than the
installed driver) that lookup fails and leaves a sticky error in the
thread's last-error slot. Since the probe runs between user kernel
launches, the user's next `cudaGetLastError()` misattributes the
leftover error to the launch, causing a spurious `invalid argument`
failure.

Fix: snapshot the last-error on entry and consume an error only if the
slot started clean, so the probe never leaks its own error and never
discards a pre-existing one.

Reproducer: a local device variable forces the guarded scope-exit device
cleanup on every call, so the probe's one-time lookup runs between the
two launches; the second `cudaGetLastError()` then observes the stale
error.
```
module m
contains
  attributes(global) subroutine kern(a)
    real*8 :: a(:)
    if (threadIdx%x <= size(a)) a(threadIdx%x) = 1.0d0
  end subroutine
end module

module h
  real*8, device, allocatable :: d(:)
contains
  subroutine step()
    use cudafor
    use m
    integer :: ierr
    real*8, device :: s          ! local device var -> per-call guarded cleanup
    if (.not. allocated(d)) allocate(d(32))
    call kern<<<1,32>>>(d)
    ierr = cudaGetLastError()
    if (ierr /= 0) then
       print *, "Kernel Launch Error ierr=", ierr, trim(cudaGetErrorString(ierr))
       stop 1
    endif
    print *, "step ok"
  end subroutine
end module

program main
  use h
  call step()
  call step()
  print *, "done"
end program
```
Before the fix (on an affected runtime): prints "step ok" then
`Kernel Launch Error ierr= 1 invalid argument`.
After the fix: prints "step ok" / "step ok" / "done".
https://invent.kde.org/qt/clang/llvm/-/commit/d3bddd715b4238e6305cbe5a22aa4cc268e9428a

Git commit 3af6879ba3d68d485e5e4e753223e4ed7a283df5 by GitHub (on behalf of Jonas Devlieghere) on 24/07/2026 at 21:24..
Revert "[lldb] Remove ConstString from FileSpec" (#211927)

Reverts llvm/llvm-project#211394 as this introduces use-after-frees in
LLDB because we expect the underlying filename and directory to outlive
the FileSpec.
https://invent.kde.org/qt/clang/llvm/-/commit/3af6879ba3d68d485e5e4e753223e4ed7a283df5

Git commit 1e7e6b3c7e8853afb999971b1abe0d0e334ad8a0 by GitHub (on behalf of David Green) on 24/07/2026 at 21:41..
[AArch64] Update min/max cost tests. NFC (#211931)
https://invent.kde.org/qt/clang/llvm/-/commit/1e7e6b3c7e8853afb999971b1abe0d0e334ad8a0

Git commit b9222a4a8287715fc26dce6f87662b815fc6825e by GitHub (on behalf of Shilei Tian) on 24/07/2026 at 21:41..
[AMDGPU][GFX13] Remove support for LDS atomic add f64 (#211922)

This are not supported by gfx13.

Fixes ROCM-28488.
https://invent.kde.org/qt/clang/llvm/-/commit/b9222a4a8287715fc26dce6f87662b815fc6825e

Git commit da798c26ae2d191863910035e07a3e2affeb21b5 by GitHub (on behalf of Oliver Hunt) on 24/07/2026 at 21:45..
[Sema] Skip expansion statements when determing local extern context (#210512) (#211745)

This bug showed up as a failed assertion that was asserting that if
not in a function or method context we should be in the global/file
context.

The root cause is that when determining the linkage context for a
decl we were failing to account for the existence of expansion
contexts. Ignoring the assertion failure, the functional effect of
this is that we would fail to detect incorrect local extern
declarations inside expansion contexts. The fix here is to make
sure that we use `getEnclosingNonExpansionStatementContext()` to
find the true DeclContext for the current scope.

The initial report only identified local extern function declarations
but the same bug occurred with extern var decls, but the path did
not lead to an assertion firing, just incorrect behaviour.

Thanks to Sirraide for explaining why this was going wrong, and
confirming this was the correct fix.

Also fixes #211912
https://invent.kde.org/qt/clang/llvm/-/commit/da798c26ae2d191863910035e07a3e2affeb21b5

Git commit a65c7202d43ef32e93abef1b36150f07e5c91457 by GitHub (on behalf of Kazu Hirata) on 24/07/2026 at 21:49..
[ProfileData] Split EagerSampleProfileNameTable by key type (NFC) (#211126)

This patch splits EagerSampleProfileNameTable into two separate
classes, EagerStringSampleProfileNameTable and
EagerMD5SampleProfileNameTable.  This patch is meant to be a
preparation patch for centralizing and speeding up symbol membership
queries like "is this symbol in the name table?".

Currently, we have two problems with these membership queries:

- Customers build their own data structures like DenseSet<uint64_t> of
  MD5 values and StringSet<> to serve those queries.  That is, the
  sample profile loader does not directly serve those queries.

- There are two places, namely SampleProfileLoader::doInitialization
  and SampleProfileNameSet, where we build identical StringSet<> of the
  name table entries, costing compilation time at both construction and
  destruction time.

Now, we could serve these membership queries from a central place using
DenseSet<uint64_t> of MD5 values, but that would be expensive if we
have a string-based name table because we need to compute MD5 values
for all name table entries.  In that case, we should construct
DenseSet<StringRef> using a cheaper hash function like
llvm::xxh3_64bits instead.

This patch helps us by separating the two cases -- MD5-based and
string-based name table.

In a subsequent patch, I'm planning to implement the "contains" method
so that users can easily ask us whether a given symbol is in the name
table.

RFC:
https://discourse.llvm.org/t/rfc-faster-sample-profile-loading/90957

Assisted-by: Antigravity
https://invent.kde.org/qt/clang/llvm/-/commit/a65c7202d43ef32e93abef1b36150f07e5c91457

Git commit 7354df8e742b2b3c58a4a918ace238c6042c4c07 by GitHub (on behalf of Valentin Clement (バレンタイン クレメン)) on 24/07/2026 at 22:14..
[flang][cuda] Keep cycle-broken device globals defined (#211897)

Breaking cyclic global initializers by removing an initializer produced
an
external declaration, which could leave references unresolved during
device
linking.

Replace selected cyclic initializers with zero initializers instead.
This
breaks the NVPTX dependency cycle while preserving device symbol
definitions.
https://invent.kde.org/qt/clang/llvm/-/commit/7354df8e742b2b3c58a4a918ace238c6042c4c07

Git commit bd47223f2009fc5d7b997cc3572cbe89b37a6d8c by GitHub (on behalf of Ziqing Luo) on 24/07/2026 at 22:40..
[ThreadSafety] Add two-state semantics for handleCall in beta mode (#210219)

Previous contributions added alias analysis and strengthened soundness
by invalidating out-parameters in beta mode. The latter feature
introduced a distinction between the contexts before and after a
function call, because the invalidation assumes that an argument passed
by pointer or reference may be changed by the function.

This requires two-state semantics for handling function attributes.
Specifically, AcquireCapability and AssertCapability, which both ensure
that some locks are held after the call, should be associated with the
post-state. Other function attributes, like RequireCapability or
ReleaseCapability, are associated with the pre-state.

This commit implements these semantics. This change only affects beta
mode.

A previous discussion about these semantics:
https://github.com/llvm/llvm-project/pull/190154

rdar://171209196
https://invent.kde.org/qt/clang/llvm/-/commit/bd47223f2009fc5d7b997cc3572cbe89b37a6d8c

Git commit b6f5847d623e5625a9278e32e2cd42af31a92df6 by GitHub (on behalf of Matt Arsenault) on 24/07/2026 at 22:51..
clang/AMDGPU: Migrate cc1 tests to subarch triples (6) (#211868)

Rewrite CIR/CodeGenHIP 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/b6f5847d623e5625a9278e32e2cd42af31a92df6

Git commit 3f69551f6bf06a8c4e44a9d86c3ed0153c20694e by GitHub (on behalf of Matt Arsenault) on 24/07/2026 at 22:52..
clang/AMDGPU: Migrate cc1 tests to subarch triples (7) (#211869)

Rewrite the remaining small test directories (CodeGenCXX, Misc, Sema,
SemaCUDA, SemaCXX) cc1 RUN lines to the new subarch triple form,
dropping the redundant -target-cpu.

Co-authored-by: Claude (Opus 4.8) <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/3f69551f6bf06a8c4e44a9d86c3ed0153c20694e

Git commit b63514c9b0d77ff01a0d9d85ce00044ba7fcd2ce by GitHub (on behalf of Valentin Clement (バレンタイン クレメン)) on 24/07/2026 at 22:52..
[flang][cuda] Add more support for data transfer with constant (#211944)

Extent support where rhs has some constant variables in an expression.
This match what is accepted in the legacy compiler.
https://invent.kde.org/qt/clang/llvm/-/commit/b63514c9b0d77ff01a0d9d85ce00044ba7fcd2ce

Git commit 356313df91da6c23267b6251a8118662442f613d by Matt Arsenault on 24/07/2026 at 22:52..
TableGen: Add first class support for processor aliases

Previously isCPUStringValid was virtual so TableGen could emit an
AArch64 specific hack for recognizing cpu aliases. Teach tablegen
about aliases, and insert each alias into the CPU subtype table as its
own entry (sorted by name, carrying the canonical processor's features
and scheduling model).

There is further opportunity for code sharing improvements. AArch64's
aliases are consumed by ARMTargetDefEmitter to emit a custom inc file
in TargetParser which should be universalized.

Co-authored-by: Claude (Claude-Opus-4.8) <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/356313df91da6c23267b6251a8118662442f613d

Git commit a312dfbfad81c68eb8fe9bbb5ffeda735ddc5ff2 by Matt Arsenault on 24/07/2026 at 22:52..
AMDGPU: Use ProcessorAlias for legacy arch names

Older targets have aliasing names which were previously implemented
by defining a second copy of the processor, identical except for the name
Use the recently improved tablegen mechanism for defining name-only aliases.
This dedupliates some redundant table entries, like the sched model.

Co-authored-by: Claude (Claude-Opus-4.8) <[email protected]>
https://invent.kde.org/qt/clang/llvm/-/commit/a312dfbfad81c68eb8fe9bbb5ffeda735ddc5ff2
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.