[all-commits] [llvm/llvm-project] 044b63: [clang][bytecode][NFC] Avoid some code duplication...

Kseniya Tikhomirova via All-commits all-commits at lists.llvm.org
Mon Jun 1 05:00:55 PDT 2026


  Branch: refs/heads/users/KseniyaTikhomirova/kernel_submit_parallel_4
  Home:   https://github.com/llvm/llvm-project
  Commit: 044b63d5771802d1baaa6e877e76e0c562aa0724
      https://github.com/llvm/llvm-project/commit/044b63d5771802d1baaa6e877e76e0c562aa0724
  Author: Timm Baeder <tbaeder at redhat.com>
  Date:   2026-06-01 (Mon, 01 Jun 2026)

  Changed paths:
    M clang/lib/AST/ByteCode/Compiler.cpp

  Log Message:
  -----------
  [clang][bytecode][NFC] Avoid some code duplication for `ScalarValueInitExpr` (#200755)


  Commit: 1b24a402bf5bb84b32f9d6d1be6b46099363adde
      https://github.com/llvm/llvm-project/commit/1b24a402bf5bb84b32f9d6d1be6b46099363adde
  Author: David Spickett <david.spickett at arm.com>
  Date:   2026-06-01 (Mon, 01 Jun 2026)

  Changed paths:
    A clang-tools-extra/Maintainers.md
    R clang-tools-extra/Maintainers.rst
    A clang-tools-extra/docs/Maintainers.md
    R clang-tools-extra/docs/Maintainers.rst

  Log Message:
  -----------
  [clang-tools-extra] Move maintainer files to .md files (#200769)

Without any formatting changes. This will break the docs build, but a
follow up (#200365) will fix the formatting and so on.


  Commit: 050c202e82a643322aa9d76a69f2c6639e4b99d6
      https://github.com/llvm/llvm-project/commit/050c202e82a643322aa9d76a69f2c6639e4b99d6
  Author: David Spickett <david.spickett at arm.com>
  Date:   2026-06-01 (Mon, 01 Jun 2026)

  Changed paths:
    M clang-tools-extra/Maintainers.md
    M clang-tools-extra/docs/Maintainers.md
    M clang-tools-extra/docs/conf.py
    M llvm/Maintainers.md

  Log Message:
  -----------
  [clang-tools-extra][docs] Convert maintainers file to Markdown (#200365)

Following the way clang does it.

* Moved files to .md (done in #200769).
* Reformatted into Markdown.
* Changed the stub file docs/Maintainers.rst into docs/Maintainers.md
and used a myst directive for the include.
* In the config file, added myst parser and ".md" as a recognised file
extension.

After this change, all maintainers files in llvm-project will be in
Markdown format.


  Commit: 919f72a12f14c6b30400dc84584fd33846ffb008
      https://github.com/llvm/llvm-project/commit/919f72a12f14c6b30400dc84584fd33846ffb008
  Author: David Spickett <david.spickett at arm.com>
  Date:   2026-06-01 (Mon, 01 Jun 2026)

  Changed paths:
    M .github/CODEOWNERS
    M libc/docs/porting.rst
    M llvm/docs/Contributing.rst
    M llvm/docs/DeveloperPolicy.rst

  Log Message:
  -----------
  [docs] Remove all references to Maintainers.rst (#200368)

All projects are using Maintainers.md files as of #200365.


  Commit: bd1b3d47462acf4f854f593bdd77b3f127adea46
      https://github.com/llvm/llvm-project/commit/bd1b3d47462acf4f854f593bdd77b3f127adea46
  Author: Raphael Isemann <rise at apple.com>
  Date:   2026-06-01 (Mon, 01 Jun 2026)

  Changed paths:
    M lldb/include/lldb/Core/Mangled.h
    M lldb/source/Core/Mangled.cpp
    M lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
    M lldb/unittests/Core/MangledTest.cpp

  Log Message:
  -----------
  [lldb] Reduce size of Mangled class (#200181)

The Mangled class is used in several places in LLDB, most notably as a
direct member of Symbol. This makes this class one of the most
frequently long-lived allocations in LLDB.

In commit a2672250be871bdac18c1a955265a98704434218 , this class got a
(large) cache that stores information about demangled data. This cache
is stored in a std::optional member, which means the memory for the
class is allocated within our Mangled object. It should be noted that
this cache is only used when we actually demangle the name, which
doesn't happen for every mangled name we encounter.

The additional cache member caused that the size of Mangled went from
16B to 152B by default (that is, even if the Mangled name was never
demangled).

This patch replaces the std::optional with a unique_ptr which stores the
cache on first use in a separate heap allocation. This changes decreases
the amount of allocated memory when debugging a relatively small
Objective-C project from 1.57GiB to 1.18GiB (-400MiB).


  Commit: 356d7e6bf429a7ff3ae798bb994631ef33891a44
      https://github.com/llvm/llvm-project/commit/356d7e6bf429a7ff3ae798bb994631ef33891a44
  Author: Nikita Popov <npopov at redhat.com>
  Date:   2026-06-01 (Mon, 01 Jun 2026)

  Changed paths:
    M llvm/lib/IR/Value.cpp
    M llvm/test/Analysis/ValueTracking/memory-dereferenceable.ll

  Log Message:
  -----------
  [IR] Handle nofree noalias in canBeFreed() (#200194)

Based on the argument nofree semantics specified in
https://github.com/llvm/llvm-project/pull/195658, we can conclude that
an argument with both nofree and noalias cannot be freed.

This also handles the case of readonly + noalias, to be consistent with
the logic for functions (and because we had a FIXME for it...)


  Commit: 0059fe6596aee0052f9ba40188ee2cef27b93af0
      https://github.com/llvm/llvm-project/commit/0059fe6596aee0052f9ba40188ee2cef27b93af0
  Author: Kashika Akhouri <akhourik at google.com>
  Date:   2026-06-01 (Mon, 01 Jun 2026)

  Changed paths:
    M clang/include/clang/Analysis/Analyses/LifetimeSafety/FactsGenerator.h
    M clang/lib/Analysis/LifetimeSafety/FactsGenerator.cpp
    M clang/test/Sema/warn-lifetime-safety.cpp

  Log Message:
  -----------
  [LifetimeSafety] Add support for lifetime capture_by (#196884)

This PR implements support for the `[[clang::lifetime_capture_by(X)]]`
attribute within the lifetime-safety analysis.

The PR introduces a new helper in `FactGenerator.cpp` called
`handleLifetimeCaptureBy` which detects
`[[clang::lifetime_capture_by(X)]]` on parameters. If detected, the
analyzer now generates an `OriginFlowFact` ensuring that captured
dependencies are added to the capturer's state. The PR supports
capture_by params and `this` and currently doesn't implement attributes
on function declarations.

Example:
Integrate `[[clang::lifetimebound]]`: This existing Clang annotation is
crucial for specifying that the lifetime of a function's output is tied
to one of its inputs.

```cpp
void setS(std::string_view& in, std::string_view out [[clang::lifetime_capture_by(X)]]);

std::string_view foo() {
  std::string a = "on stack";
  std::string_view res;
  setS(res, a);
  return res;  // warning: returning address of local variable 'a'.
}
```

Lifetime Facts:
```cpp
Function: foo
  Block B2:
  End of Block
  Block B1:
    OriginFlow: 
        Dest: 0 (Expr: ImplicitCastExpr, Type : const char *)
        Src:  1 (Expr: StringLiteral, Type : const char (&)[9])
    Use (0 (Expr: ImplicitCastExpr, Type : const char *), Read)
    Use (2 (Expr: CXXDefaultArgExpr, Type : const class std::allocator<char> &), Read)
    Expire (MaterializeTemporaryExpr at 0x562afa69fdb0)
    OriginFlow: 
        Dest: 3 (Decl: res, Type : std::string_view)
        Src:  4 (Expr: CXXConstructExpr, Type : std::string_view)
    Use (3 (Decl: res, Type : std::string_view), Read)
    Issue (0 (Path: res), ToOrigin: 7 (Expr: DeclRefExpr, Decl: res))
    Issue (1 (Path: a), ToOrigin: 8 (Expr: DeclRefExpr, Decl: a))
    OriginFlow: 
        Dest: 9 (Expr: ImplicitCastExpr, Type : const class std::basic_string<char> &)
        Src:  8 (Expr: DeclRefExpr, Decl: a)
    Use (9 (Expr: ImplicitCastExpr, Type : const class std::basic_string<char> &), Read)
    OriginFlow: 
        Dest: 10 (Expr: CXXMemberCallExpr, Type : __sv_type)
        Src:  9 (Expr: ImplicitCastExpr, Type : const class std::basic_string<char> &)
    OriginFlow: 
        Dest: 11 (Expr: ImplicitCastExpr, Type : __sv_type)
        Src:  10 (Expr: CXXMemberCallExpr, Type : __sv_type)
    Use (11 (Expr: ImplicitCastExpr, Type : __sv_type), Read)
// New Origin Flow fact added    
OriginFlow: 
        Dest: 3 (Decl: res, Type : std::string_view)
        Src:  11 (Expr: ImplicitCastExpr, Type : __sv_type), Merge
    Use (3 (Decl: res, Type : std::string_view), Read)
    Issue (2 (Path: res), ToOrigin: 12 (Expr: DeclRefExpr, Decl: res))
    OriginFlow: 
        Dest: 13 (Expr: ImplicitCastExpr, Type : const std::string_view &)
        Src:  12 (Expr: DeclRefExpr, Decl: res)
    OriginFlow: 
        Dest: 14 (Expr: ImplicitCastExpr, Type : std::string_view)
        Src:  3 (Decl: res, Type : std::string_view)
    OriginFlow: 
        Dest: 15 (Expr: CXXConstructExpr, Type : std::string_view)
        Src:  14 (Expr: ImplicitCastExpr, Type : std::string_view)
    Expire (a)
    Expire (res, Origin: 3 (Decl: res, Type : std::string_view))
    OriginEscapes (15 (Expr: CXXConstructExpr, Type : std::string_view), via Return)
  End of Block
  Block B0:
  End of Block
```


  Commit: 9738adaff8e2ea79917858a5e6349572e884c4cd
      https://github.com/llvm/llvm-project/commit/9738adaff8e2ea79917858a5e6349572e884c4cd
  Author: Kseniya Tikhomirova <kseniya.tikhomirova at intel.com>
  Date:   2026-06-01 (Mon, 01 Jun 2026)

  Changed paths:
    M libsycl/docs/index.rst
    A libsycl/include/sycl/__impl/detail/get_device_kernel_info.hpp
    A libsycl/include/sycl/__impl/detail/unified_range_view.hpp
    M libsycl/include/sycl/__impl/queue.hpp
    M libsycl/src/detail/global_objects.cpp
    M libsycl/src/detail/program_manager.cpp
    M libsycl/src/detail/program_manager.hpp
    M libsycl/src/detail/queue_impl.cpp
    M libsycl/src/detail/queue_impl.hpp
    M libsycl/src/queue.cpp
    A libsycl/test/basic/get_backend.cpp
    A libsycl/test/basic/submit_fn_ptr.cpp

  Log Message:
  -----------
  [libsycl] Add single_task (#192499)

Depends on liboffload PR:
https://github.com/llvm/llvm-project/pull/194333.

The approach with void sycl_kernel_launch(pack of arguments) implies
that
we can use or copy arguments only during that call. Since it pass only
kernel arguments as parameters and returns void - we have to split
setting
of extra kernel data like event dependencies and range and getting
result
event from arguments handling and direct kernel submision if it is
possible. Key stages: 1) passing to queue (or handler in future)
dependency
events and range (for parallel_for), saving them in queue (copy/move).
2)
wrapping kernel arguments into typeless wrappers (pointer based,
initially
no copy) and passing to the queue. Then depending on scenario (without
host
tasks and accessors we should be able to submit everything directly)
collection of arguments is converted to preferred liboffload structure
(no
copy of objects, copy of pointers) and passed to liboffload or RT does
deep
copy of provided arguments (simple copy of pointer of USM and copy of
value
for other arguments) to keep them alive till kernel enqueue outside
parent
submit call. 3) getting event associated with kernel enqueue. Key notes:
1)
Having these 3 separated calls is not the best solution but the only one
allowing to avoid copy for some scenarios (otherwise we have to do deep
copy always and then do joined kernel submission outside
sycl_kernel_launch
scope). 2) submit must be thread-safe. Since we have 3 calls we need to
keep kernel params and resulting event in a per queue + per thread/per
kernel way. To achieve this without copy and joined kernel submission
queue
(in future - handler) stores thread_local data for kernel submission.
thread_local can't be used for non-static class members so they are
static.
Given: same queue can be used from different threads but thread can't
use
different queues at the same moment; that means that we actually need
per
thread storage.

This is part of the SYCL support upstreaming effort. The relevant RFCs
can be found here:


https://discourse.llvm.org/t/rfc-add-full-support-for-the-sycl-programming-model/74080
https://discourse.llvm.org/t/rfc-sycl-runtime-upstreaming/74479

---------

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>


  Commit: 73ded458839c0a105b19476929f6206356f92991
      https://github.com/llvm/llvm-project/commit/73ded458839c0a105b19476929f6206356f92991
  Author: DonĂ¡t Nagy <donat.nagy at ericsson.com>
  Date:   2026-06-01 (Mon, 01 Jun 2026)

  Changed paths:
    M clang/lib/Analysis/LiveVariables.cpp
    M clang/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp
    M clang/test/Analysis/cxx23-assume-attribute.cpp

  Log Message:
  -----------
  [Liveness][analyzer] Fix handling of [[assume]] attributes  (#198618)

Before this commit, if the analyzer encountered code like
```
int f(int a, int b) {
  [[assume(a == 2), assume(b == 3)]];
  return a + b;
}
```
it performed the following steps:
1. It visited the expression `a == 2` with `ExprEngine::Visit` (after
visiting its sub-expressions, within the regular visitation that visits
each statement of the `CFGBlock`). This triggered the `EagerlyAssume`
logic and separated two execution paths.
2. It discarded the result bound to `a == 2` from the `Environment`
because `a == 2` is not a direct child of the `AttributedStmt`.
3. Analogously, it visited an evaluated `b == 3`.
4. Analogously, it discarded the result bound to `b == 3`.
5. On each execution path `VisitAttributedStmt` was reached, it ran the
`PreStmt<AttributedStmt>` checkers and stored their results in
`CheckerPreStmt`. As there are AFAIK no such checkers, after this step
the only element of `CheckerPreStmt` was the node `Pred`.
6. It constructed a `NodeBuilder`, which was unused, but its constructor
inserted the nodes in `CheckerPreStmt` into `EvalSet`. This was
essentially a shortcut that skipped the handling of the assumptions --
but ultimately its effects were absorbed and negated by the tricky side
effects of `ExprEngine::Visit`.
7. For each node `N` in `CheckerPreStmt` (i.e. for `N == Pred`) and for
each assume attribute, it created a child node of `N` where the
assumption of **that one attribute** was visited again with
`ExprEngine::Visit`. (I.e. it separated execution paths and implicitly
placed "OR" relationships between the assumptions.)
8. It **completely ignored** the value produced by the assumption
expression: did not update the state and did not discard execution paths
where the [[assume]] assumption contradicted earlier knowledge.

This commit fixes all four logic errors:
1. The liveness analysis is updated to ensure that an `AttributedStmt`
keeps alive the assumption expressions of its [[assume]] attributes.
This ensured that their results remain in the `Environment`.
2. Now there is no `NodeBuilder` that skips the handling the
assumptions.
3. The invocation of `ExprEngine::Visit` is removed from
`VisitAttributedStmt`: there is no reason to revisit those statements
   (now that we don't lose the evaluation results).
4. The state is updated to record that the values of the assumption
expressions are ALL assumed to be true. If the assumption leads to a
contradiction, the execution path is discarded (by not generating a
node).

This commit also adds a few new testcases and resolves some FIXME
comments in previously existing tests.


  Commit: caf469dc802464a3554f52b10c818d4e0c840062
      https://github.com/llvm/llvm-project/commit/caf469dc802464a3554f52b10c818d4e0c840062
  Author: Nerixyz <nerixdev at outlook.de>
  Date:   2026-06-01 (Mon, 01 Jun 2026)

  Changed paths:
    M llvm/include/llvm/Support/ConvertUTF.h
    M llvm/lib/Support/ConvertUTFWrapper.cpp

  Log Message:
  -----------
  [Support] Take ArrayRef in convertWideToUTF8 (#200687)

`convertWideToUTF8` took a `std::wstring`, but it never modified its
data. An `ArrayRef` or `std::wstring_view` are sufficient here. I chose
`ArrayRef<wchar_t>` over `std::wstring_view`, because it can be
implicitly constructed from any range that provides `data()` and
`size()`. A second overload taking a `const wchar_t *` is provided to
convert null terminated wide C-strings.


  Commit: faa87b02121fbb668fcf71260a63c88729b83abf
      https://github.com/llvm/llvm-project/commit/faa87b02121fbb668fcf71260a63c88729b83abf
  Author: Matthew Devereau <matthew.devereau at arm.com>
  Date:   2026-06-01 (Mon, 01 Jun 2026)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
    M llvm/test/CodeGen/AArch64/clmul-scalable.ll

  Log Message:
  -----------
  [AArch64] Lower scalable i64 CLMUL with SVE2/SME (#198999)

When AES or SSVE-AES are not available, but SVE2 or SME are,
clmul.nxv2i64 can benefit from a cross-byte CLMUL of .S precision. This
re-uses the functionality added for nxv8i16.


  Commit: 9863725ffe80054d3fb86d7468746a1d0def26c4
      https://github.com/llvm/llvm-project/commit/9863725ffe80054d3fb86d7468746a1d0def26c4
  Author: Ryotaro Kasuga <kasuga.ryotaro at fujitsu.com>
  Date:   2026-06-01 (Mon, 01 Jun 2026)

  Changed paths:
    A llvm/test/Analysis/DependenceAnalysis/exact-siv-mul-overflow.ll

  Log Message:
  -----------
  [DA] Add test for the Exact test misses dependency due to overflow (NFC) (#200780)

This patch adds a test case that demonstrates that the Exact test misses
the dependency due to mishandling of overflow. The test case is taken
from #200766.


  Commit: 421b27c4ab4b789bc5084f5f3ff9c008f69846df
      https://github.com/llvm/llvm-project/commit/421b27c4ab4b789bc5084f5f3ff9c008f69846df
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2026-06-01 (Mon, 01 Jun 2026)

  Changed paths:
    M llvm/lib/AsmParser/LLParser.cpp
    A llvm/test/Assembler/dbg-intrinsic-forward-ref-upgrade.ll

  Log Message:
  -----------
  [AsmParser] Apply deferred debug locations before intrinsic upgrade. (#200779)

Intrinsic upgrades may delete instructions, leaving dangling pointers
that may be accessed when applying deferred debug locations after
91b77dc (#200649).

Fix by applying deferred debug locations before intrinsic upgrade.

PR: https://github.com/llvm/llvm-project/pull/200779


  Commit: 56c9a2c796661fd8b2ca627ce1f39cb3e97a203f
      https://github.com/llvm/llvm-project/commit/56c9a2c796661fd8b2ca627ce1f39cb3e97a203f
  Author: Chaitanya <Krishna.Sankisa at amd.com>
  Date:   2026-06-01 (Mon, 01 Jun 2026)

  Changed paths:
    M flang/lib/Lower/OpenMP/ClauseProcessor.cpp
    M flang/lib/Lower/OpenMP/ClauseProcessor.h
    M flang/lib/Lower/OpenMP/OpenMP.cpp
    R flang/test/Lower/OpenMP/Todo/dyn-groupprivate-clause.f90
    A flang/test/Lower/OpenMP/dyn-groupprivate-clause.f90
    M llvm/include/llvm/Frontend/OpenMP/ConstructDecompositionT.h

  Log Message:
  -----------
  [flang][mlir] Add flang to mlir lowering for dyn_groupprivate (#180938)

This PR implements the Flang frontend lowering for the
`dyn_groupprivate` clause
Changes:
- Add ClauseProcessor handling for DynGroupprivate clause
- Generate appropriate MLIR representation for dyn_groupprivate
- Add/update test cases for dyn_groupprivate lowering
- Remove TODO marker for dyn_groupprivate clause


  Commit: 725c818626f785df8a9aaa0d3a8c69abd08b7004
      https://github.com/llvm/llvm-project/commit/725c818626f785df8a9aaa0d3a8c69abd08b7004
  Author: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
  Date:   2026-06-01 (Mon, 01 Jun 2026)

  Changed paths:
    M .github/CODEOWNERS
    A clang-tools-extra/Maintainers.md
    R clang-tools-extra/Maintainers.rst
    A clang-tools-extra/docs/Maintainers.md
    R clang-tools-extra/docs/Maintainers.rst
    M clang-tools-extra/docs/conf.py
    M clang/include/clang/Analysis/Analyses/LifetimeSafety/FactsGenerator.h
    M clang/lib/AST/ByteCode/Compiler.cpp
    M clang/lib/Analysis/LifetimeSafety/FactsGenerator.cpp
    M clang/lib/Analysis/LiveVariables.cpp
    M clang/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp
    M clang/test/Analysis/cxx23-assume-attribute.cpp
    M clang/test/Sema/warn-lifetime-safety.cpp
    M flang/lib/Lower/OpenMP/ClauseProcessor.cpp
    M flang/lib/Lower/OpenMP/ClauseProcessor.h
    M flang/lib/Lower/OpenMP/OpenMP.cpp
    R flang/test/Lower/OpenMP/Todo/dyn-groupprivate-clause.f90
    A flang/test/Lower/OpenMP/dyn-groupprivate-clause.f90
    M libc/docs/porting.rst
    M libsycl/include/sycl/__impl/detail/unified_range_view.hpp
    M libsycl/include/sycl/__impl/queue.hpp
    M libsycl/src/detail/queue_impl.cpp
    M libsycl/src/detail/queue_impl.hpp
    M lldb/include/lldb/Core/Mangled.h
    M lldb/source/Core/Mangled.cpp
    M lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
    M lldb/unittests/Core/MangledTest.cpp
    M llvm/Maintainers.md
    M llvm/docs/Contributing.rst
    M llvm/docs/DeveloperPolicy.rst
    M llvm/include/llvm/Frontend/OpenMP/ConstructDecompositionT.h
    M llvm/include/llvm/Support/ConvertUTF.h
    M llvm/lib/AsmParser/LLParser.cpp
    M llvm/lib/IR/Value.cpp
    M llvm/lib/Support/ConvertUTFWrapper.cpp
    M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
    A llvm/test/Analysis/DependenceAnalysis/exact-siv-mul-overflow.ll
    M llvm/test/Analysis/ValueTracking/memory-dereferenceable.ll
    A llvm/test/Assembler/dbg-intrinsic-forward-ref-upgrade.ll
    M llvm/test/CodeGen/AArch64/clmul-scalable.ll

  Log Message:
  -----------
  Merge branch 'main' into users/KseniyaTikhomirova/kernel_submit_parallel_4


Compare: https://github.com/llvm/llvm-project/compare/f4711c9a8e8c...725c818626f7

To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list