[qt/clang/llvm-project]: 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-project
Pushed by mirror-service into branch 'upstream/users/cchen/flang-metadirective-loop-core'.
Changed from 2cd32afa2c88d444c5375df43bd06b6c8e5e56fb to 6b5a5b75257fa112f6e20603ae5bbd25427ef894
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 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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/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-project/-/commit/8231fda982ba419bc8ac05a45ec752e00218db8b

Git commit 6b5a5b75257fa112f6e20603ae5bbd25427ef894 by Chi-Chun, Chen on 24/07/2026 at 18:25..
[flang][OpenMP] Lower DO and SIMD variants in metadirectives

Lower DO, SIMD, and DO SIMD replacement directives selected by a
metadirective. Support standalone and begin/end forms with static or runtime
selection.

A standalone metadirective and its associated loop are represented as sibling
PFT evaluations. For example:

```fortran
!$omp metadirective &
!$omp& when(user={condition(flag)}: do) &
!$omp& otherwise(nothing)
do i = 1, n
  a(i) = i
end do
```

has the following evaluation shape:

```text
METADIRECTIVE
DO
`-- a(i) = i
```

Temporarily associate the DO evaluation with the metadirective so each
replacement can reuse the existing OpenMP loop-lowering path. Runtime
selection then lowers conceptually as:

```text
if (flag)
  omp.wsloop
    omp.loop_nest
else
  fir.do_loop
```

This change:

- Lowers DO, SIMD, and DO SIMD replacements through the existing loop-lowering
  path.
- Supports static and runtime selection for standalone and begin/end
  metadirectives.
- Lowers the associated DO once in each runtime branch while preserving an
  ordinary Fortran loop for NOTHING or standalone replacements.
- Preserves intervening compiler loop directives and statements following the
  associated loop.
- Restores the evaluation tree when Flang reuses it for alternate ENTRY points.
- Applies COLLAPSE and ORDERED to the required loop depth without leaking
  temporary loop-index attributes between replacements.

Determine loop association from directive names before lowering variant
clauses. This keeps clause lowering lazy, so a statically inapplicable
replacement cannot trigger an unsupported clause.

This initial support is intentionally limited to DO, SIMD, and DO SIMD.
The following cases produce focused diagnostics instead of potentially
incorrect IR:

- Replacements such as PARALLEL DO that create a new data environment.
- Replacements containing DEFAULT or explicit data-sharing clauses.
- Loop variants nested inside an existing OpenMP data environment.
- TARGET, mixed block- and loop-associated replacements, and other
  loop-associated directives.
- Unstructured or non-canonical loops and loop nests that are too shallow for
  COLLAPSE or ORDERED.
- Loop indices that are POINTER, ALLOCATABLE, or ASSOCIATE names.

Add lowering coverage for selection, fallbacks, DO and SIMD composition,
affected loop depth, compiler directives, ENTRY, and unsupported boundaries.

Assisted with codex.
https://invent.kde.org/qt/clang/llvm-project/-/commit/6b5a5b75257fa112f6e20603ae5bbd25427ef894
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.