[all-commits] [llvm/llvm-project] 642bde: [SLP] Fix infinite loop in ordered reduction workl...

Vitaly Buka via All-commits all-commits at lists.llvm.org
Tue Mar 24 18:21:56 PDT 2026


  Branch: refs/heads/users/vitalybuka/spr/compiler-rt-suppress-unused-variable-report-in-emutls
  Home:   https://github.com/llvm/llvm-project
  Commit: 642bde76c32e38457a0b30644763f1447523cff5
      https://github.com/llvm/llvm-project/commit/642bde76c32e38457a0b30644763f1447523cff5
  Author: Jinsong Ji <jinsong.ji at intel.com>
  Date:   2026-03-24 (Tue, 24 Mar 2026)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
    A llvm/test/Transforms/SLPVectorizer/order-reduction-infinite-loop.ll

  Log Message:
  -----------
  [SLP] Fix infinite loop in ordered reduction worklist processing (#188342)

The ordered reduction support introduced in 94e366ef2060 can cause an
infinite loop when processing complex reduction chains. The worklist
algorithm re-adds instructions from PossibleOrderedReductionOps when
switching to ordered mode, but doesn't track which instructions have
already been processed. This allows instructions to be re-added and
processed multiple times, creating cycles.

Add a Visited set to track processed instructions and skip any that
have already been handled, preventing the infinite loop.


  Commit: 674cb9e3f18a6e428d611f39e7f5a99537afb5b6
      https://github.com/llvm/llvm-project/commit/674cb9e3f18a6e428d611f39e7f5a99537afb5b6
  Author: satyanarayana reddy janga <satyajanga at fb.com>
  Date:   2026-03-24 (Tue, 24 Mar 2026)

  Changed paths:
    M lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp

  Log Message:
  -----------
  [lldb] Fix immediately-destroyed ScopedTimeout in KillProcess (#188333)

The ScopedTimeout was created as a temporary, causing it to be destroyed
immediately and the timeout to have no effect. Give it a name so it
lives until the end of the function scope.


  Commit: 6b128091ba87ec711e11ed34b2810ff5deb8cef4
      https://github.com/llvm/llvm-project/commit/6b128091ba87ec711e11ed34b2810ff5deb8cef4
  Author: Sirraide <aeternalmail at gmail.com>
  Date:   2026-03-24 (Tue, 24 Mar 2026)

  Changed paths:
    M clang/test/InstallAPI/extra-exclude-headers.test
    M clang/test/InstallAPI/hiddens.test

  Log Message:
  -----------
  [InstallAPI] [Tests] Avoid checking compiler output for 'error' (#188307)

We have two tests that use FileCheck for diagnostics and which try to
check that the output contains no compiler errors by checking for the
string 'error'. The issue with this approach is that this also causes
those tests to fail if the *path* contains the word 'error', which can
happen e.g. if the branch name contains the word 'error'.

Instead, we now check for `error:` since that string is much less likely
to appear in a path.


  Commit: 6a045c29a98ce371d05ed2cf66fb04c33dc0691f
      https://github.com/llvm/llvm-project/commit/6a045c29a98ce371d05ed2cf66fb04c33dc0691f
  Author: Mehdi Amini <joker.eph at gmail.com>
  Date:   2026-03-24 (Tue, 24 Mar 2026)

  Changed paths:
    M llvm/include/llvm/CodeGen/GlobalISel/IRTranslator.h
    M llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
    M llvm/include/llvm/CodeGen/LowLevelTypeUtils.h
    M llvm/include/llvm/CodeGen/TargetLowering.h
    M llvm/include/llvm/CodeGenTypes/LowLevelType.h
    M llvm/lib/CodeGen/GlobalISel/CallLowering.cpp
    M llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
    M llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
    M llvm/lib/CodeGen/GlobalISel/LegalizeMutations.cpp
    M llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
    M llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp
    M llvm/lib/CodeGen/GlobalISel/Utils.cpp
    M llvm/lib/CodeGen/LowLevelTypeUtils.cpp
    M llvm/lib/CodeGen/MIRParser/MIParser.cpp
    M llvm/lib/CodeGen/MachineVerifier.cpp
    M llvm/lib/CodeGenTypes/LowLevelType.cpp
    M llvm/lib/Target/AMDGPU/AMDGPUCombinerHelper.cpp
    M llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
    M llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-subvector.ll
    M llvm/test/CodeGen/AArch64/GlobalISel/pr168872.ll
    M llvm/test/CodeGen/AArch64/GlobalISel/translate-gep.ll
    M llvm/test/CodeGen/AArch64/GlobalISel/translate-sve-formal-argument-multiple.ll
    M llvm/test/CodeGen/AArch64/GlobalISel/translate-sve-formal-argument.ll
    M llvm/test/CodeGen/MIR/AArch64/parse-low-level-type-invalid0.mir
    M llvm/test/CodeGen/MIR/AArch64/parse-low-level-type-invalid1.mir
    M llvm/test/CodeGen/MIR/AArch64/parse-low-level-type-invalid2.mir
    M llvm/test/CodeGen/MIR/AArch64/parse-low-level-type-invalid3.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err0.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err1.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err10.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err11.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err12.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err13.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err14.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err15.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err2.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err3.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err4.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err5.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err6.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err7.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err8.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err9.mir
    M llvm/test/CodeGen/MIR/WebAssembly/typed-immediate-operand-invalid0.mir
    M llvm/test/CodeGen/MIR/WebAssembly/typed-immediate-operand-invalid1.mir
    M llvm/test/TableGen/GlobalISelEmitter/GlobalISelEmitter.td
    M llvm/test/TableGen/GlobalISelEmitter/HwModes.td
    M llvm/unittests/CodeGen/GlobalISel/CMakeLists.txt
    R llvm/unittests/CodeGen/GlobalISel/IRTranslatorBF16Test.cpp
    M llvm/utils/TableGen/Common/CMakeLists.txt
    M llvm/utils/TableGen/Common/GlobalISel/GlobalISelMatchTable.cpp
    M llvm/utils/TableGen/Common/GlobalISel/GlobalISelMatchTableExecutorEmitter.cpp
    M llvm/utils/TableGen/Common/GlobalISel/GlobalISelMatchTableExecutorEmitter.h

  Log Message:
  -----------
  Revert "[GlobalISel][LLT] Introduce FPInfo for LLT (Enable bfloat, ppc128float and others in GlobalISel) (#155107)" (#188344)

This reverts commit b1aa6a45060bb9f89efded9e694503d6b4626a4a and commit
ce44d63e0d14039f1e8f68e6b7c4672457cabd4e.

This fails the build with some older gcc:

llvm/include/llvm/CodeGenTypes/LowLevelType.h:501:35: error: call to
non-constexpr function ‘static llvm::LLT llvm::LLT::integer(unsigned
int)’
     return integer(getSizeInBits());
                                   ^


  Commit: de0c366e4b7224f33d2945194035d21501e3d636
      https://github.com/llvm/llvm-project/commit/de0c366e4b7224f33d2945194035d21501e3d636
  Author: Alex Duran <alejandro.duran at intel.com>
  Date:   2026-03-24 (Tue, 24 Mar 2026)

  Changed paths:
    M llvm/lib/Target/SPIRV/CMakeLists.txt
    M llvm/lib/Target/SPIRV/SPIRV.h
    A llvm/lib/Target/SPIRV/SPIRVCtorDtorLowering.cpp
    A llvm/lib/Target/SPIRV/SPIRVCtorDtorLowering.h
    M llvm/lib/Target/SPIRV/SPIRVTargetMachine.cpp
    A llvm/test/CodeGen/SPIRV/ctor-dtor-lowering-ir.ll
    A llvm/test/CodeGen/SPIRV/ctor-dtor-lowering.ll
    A llvm/test/CodeGen/SPIRV/ctor-dtor-no-openmp-ir.ll
    M llvm/test/CodeGen/SPIRV/llc-pipeline.ll

  Log Message:
  -----------
  [llvm][SPIRV] Add pass to lower Ctors/Dtors for SPIRV (#187509)

This PR adds a new SPIRV pass that generates a kernel named
"spirv$device$init" that iterates the pointers in the table pointed by
__init_array_start and __init_array_end and executes them. It also
generates symbols for each constructor with the form
__init_array_object_NAME_PRIORITY.

These symbols will be used by the Level Zero plugin in the liboffload
runtime (with the support introduced by #187510) to generate the
aforementioned table as spirv-link cannot create the table itself.

It also does the same thing for destructors, with the kernel name being
"spirv$device$fini", the table pointers __fini_array_start and
__fini_array_end, and the generated symbols prefix __fini_array_object.

The code was mostly generated by Claude 4.5 and has been reviewed by me
to the best of my ability.


  Commit: 31b17c4789abc2504cfe3b3f05feebafc0e88dc8
      https://github.com/llvm/llvm-project/commit/31b17c4789abc2504cfe3b3f05feebafc0e88dc8
  Author: Amir Ayupov <aaupov at fb.com>
  Date:   2026-03-24 (Tue, 24 Mar 2026)

  Changed paths:
    M bolt/docs/index.rst
    A bolt/docs/profiles.md

  Log Message:
  -----------
  [BOLT] Add profile format documentation (#186685)

Create bolt/docs/profiles.md documenting all accepted profile formats:
perf.data, fdata, YAML, and pre-aggregated. Covers collection methods,
format syntax, examples, and known limitations.

Add reference from bolt/docs/index.rst.


  Commit: fce6895804e596f18765c4db0f76931dac8df9f8
      https://github.com/llvm/llvm-project/commit/fce6895804e596f18765c4db0f76931dac8df9f8
  Author: Amir Ayupov <aaupov at fb.com>
  Date:   2026-03-24 (Tue, 24 Mar 2026)

  Changed paths:
    M bolt/include/bolt/Profile/DataAggregator.h
    M bolt/lib/Profile/DataAggregator.cpp

  Log Message:
  -----------
  [BOLT] Support buildid in pre-aggregated profile

Sample addresses belonging to external DSOs (buildid doesn't match the
current file) are treated as external (0).

Buildid for the main binary is expected to be omitted.

Test Plan: added pre-aggregated-perf-buildid.test

Reviewers:
paschalis-mpeis, maksfb, yavtuk, ayermolo, yozhu, rafaelauler, yota9

Reviewed By: paschalis-mpeis

Pull Request: https://github.com/llvm/llvm-project/pull/186931


  Commit: 2975451a70fbd4b35cc790294ee7ed46970a253b
      https://github.com/llvm/llvm-project/commit/2975451a70fbd4b35cc790294ee7ed46970a253b
  Author: Dave Lee <davelee.com at gmail.com>
  Date:   2026-03-24 (Tue, 24 Mar 2026)

  Changed paths:
    M lldb/packages/Python/lldbsuite/test/lldbtest.py

  Log Message:
  -----------
  [lldb] Mark lldbtest.build() parameters as keyword-only (#188327)

This reinforces what is already true in the codebase: all uses of
`build()` use keyword arguments.

With this change, it will be an error to call `build` using positional
arguments:

```
TypeError: build() takes 1 positional argument but 2 were given
```


  Commit: 2e247a1d54ff9a3ae73d16fd1d70fca6f7169c7e
      https://github.com/llvm/llvm-project/commit/2e247a1d54ff9a3ae73d16fd1d70fca6f7169c7e
  Author: Amir Ayupov <aaupov at fb.com>
  Date:   2026-03-24 (Tue, 24 Mar 2026)

  Changed paths:
    M bolt/include/bolt/Profile/DataAggregator.h
    M bolt/lib/Profile/DataAggregator.cpp

  Log Message:
  -----------
  Revert "[BOLT] Support buildid in pre-aggregated profile"

Accidentally pushed unreviewed version.

This reverts commit fce6895804e596f18765c4db0f76931dac8df9f8.


  Commit: 2fafeb0509f972c70c5e1dc6d4ac466c52d25591
      https://github.com/llvm/llvm-project/commit/2fafeb0509f972c70c5e1dc6d4ac466c52d25591
  Author: Amir Ayupov <aaupov at fb.com>
  Date:   2026-03-24 (Tue, 24 Mar 2026)

  Changed paths:
    M bolt/include/bolt/Profile/DataAggregator.h
    M bolt/include/bolt/Profile/DataReader.h
    M bolt/lib/Profile/DataAggregator.cpp
    A bolt/test/X86/Inputs/pre-aggregated-buildid.txt
    A bolt/test/X86/pre-aggregated-perf-buildid.test

  Log Message:
  -----------
  [BOLT] Support buildid in pre-aggregated profile (#186931)

Sample addresses belonging to external DSOs (buildid doesn't match the
current file) are treated as external (0).

Buildid for the main binary is expected to be omitted.

Test Plan:
added pre-aggregated-perf-buildid.test


  Commit: 303afa0899357b21a6a325115068108aa5e71a4f
      https://github.com/llvm/llvm-project/commit/303afa0899357b21a6a325115068108aa5e71a4f
  Author: Zyn <103019185+zyn-li at users.noreply.github.com>
  Date:   2026-03-24 (Tue, 24 Mar 2026)

  Changed paths:
    M lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
    M lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h
    A lldb/test/API/lang/cpp/non-type-template-param-member-ptr/Makefile
    A lldb/test/API/lang/cpp/non-type-template-param-member-ptr/TestCppNonTypeTemplateParamPtrToMember.py
    A lldb/test/API/lang/cpp/non-type-template-param-member-ptr/main.cpp

  Log Message:
  -----------
  [lldb][DWARFASTParserClang] Handle pointer-to-member-data non-type template (#187598)

## Description

### Problem
MakeAPValue in DWARFASTParserClang.cpp did not handle
pointer-to-member-data non-type template parameters (e.g., template <int
S::*P>), causing LLDB to produce incorrect results or crash.

DWARF encodes pointer-to-member-data NTTPs as
`DW_TAG_template_value_parameter` with a `DW_AT_const_value`
representing the byte offset of the member within the containing struct.
MakeAPValue is responsible for converting this value into a clang
APValue, but it only handled integer/enum and floating-point types. For
pointer-to-member types, it returned `std::nullopt`.

This caused the caller (ParseTemplateDIE) to fall back to creating a
type-only TemplateArgument (kind=Type) instead of a value-carrying one.
When two specializations differ only by which member they point to
(e.g., MemberData<&S::x> / MemberData<&S::y>), both produce identical
TemplateArguments. Clang's
[findSpecialization](https://github.com/llvm/llvm-project/blob/3bc216c29cb42c7d94b617943b1d44afce605588/lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp#L1674-L1677)
then treats the second as a duplicate, so only one specialization exists
in the AST. The second variable becomes unresolvable.

(See Debugger Evidence section below)

In more complex cases, this triggers an assertion failure in
[clang::CXXRecordDecl::setBases():
cast()](https://github.com/llvm/llvm-project/blob/3bc216c29cb42c7d94b617943b1d44afce605588/clang/lib/AST/DeclCXX.cpp#L219)
argument of incompatible type.

## Fix
MakeAPValue: Added `IsMemberDataPointerType()` to the integral type
check so that pointer-to-member byte offsets produce distinct APValues.
Also replaced the silent return `std::nullopt` for unsupported types
with `lldbassert` so unknown type classes are caught during development.

`ResolveMemberDataPointerToFieldDecl`: New method that follows the DWARF
chain to resolve the byte offset to the actual FieldDecl, creating
TemplateArgument(Declaration) matching clang's own AST:

DW_TAG_template_value_parameter (DW_AT_type)
  → DW_TAG_ptr_to_member_type (DW_AT_containing_type)
    → DW_TAG_structure_type → match DW_TAG_member by byte offset

If resolution fails at any step, falls through to the integer APValue
path as a safe fallback.

Verified by comparing clang's AST (clang -Xclang -ast-dump) with LLDB's
reconstructed AST (image dump ast) — both now produce TemplateArgument
decl '&S::x' referencing the correct FieldDecl.


## Test Plan
Added `lldb/test/API/lang/cpp/non-type-template-param-member-ptr/` with
a test that creates two specializations (MemberData<&S::x> and
MemberData<&S::y>) and verifies both are resolvable with correct type
names.

```
| |-ClassTemplateSpecializationDecl 0x234e2314800 <line:18:1, line:21:1> line:19:8 struct MemberData definition instantiated_from 0x234e2314110 implicit_instantiation
| | |-DefinitionData pass_in_registers empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init
| | | |-DefaultConstructor exists trivial constexpr defaulted_is_constexpr
--
| | |-TemplateArgument decl '&S::x'
| | | `-Field 0x234e2313ed0 'x' 'int'
| | |-CXXRecordDecl 0x234e2314ac0 <col:1, col:8> col:8 implicit struct MemberData
--
| `-ClassTemplateSpecializationDecl 0x234e25b5968 <line:18:1, line:21:1> line:19:8 struct MemberData definition instantiated_from 0x234e2314110 implicit_instantiation
|   |-DefinitionData pass_in_registers empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init
|   | |-DefaultConstructor exists trivial constexpr defaulted_is_constexpr
--
|   |-TemplateArgument decl '&S::y'
|   | `-Field 0x234e2313f38 'y' 'int'
|   |-CXXRecordDecl 0x234e25b5bd8 <col:1, col:8> col:8 implicit struct MemberData
--
| |-ClassTemplateSpecializationDecl 0x234e25b7080 <line:27:1, line:30:1> line:28:8 struct MaybeNull definition instantiated_from 0x234e25b6b50 implicit_instantiation
| | |-DefinitionData pass_in_registers empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init
| | | |-DefaultConstructor exists trivial constexpr defaulted_is_constexpr
--
| `-ClassTemplateSpecializationDecl 0x234e25b80c0 <line:27:1, line:30:1> line:28:8 struct MaybeNull definition instantiated_from 0x234e25b6b50 implicit_instantiation
|   |-DefinitionData pass_in_registers empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init
|   | |-DefaultConstructor exists trivial constexpr defaulted_is_constexpr
--
|   |-TemplateArgument decl '&g1'
|   | `-Var 0x234e25b69b8 'g1' 'int'
|   |-CXXRecordDecl 0x234e25b8338 <col:1, col:8> col:8 implicit struct MaybeNull
```

```
lldb a.out -o "type lookup MemberData<&S::x>" -o "type lookup MemberData<&S::y>" -o quit
(lldb) target create "a.out"
Current executable set to 'a.out' (x86_64).
(lldb) type lookup MemberData<&S::x>
template<> struct MemberData<&S::x> {
    int get(S &);
}
(lldb) type lookup MemberData<&S::y>
template<> struct MemberData<&S::y> {
    int get(S &);
}
```



## **Debugger Evidence**
Collected at two `DW_TAG_template_value_parameter` DIEs during
ParseTemplateDIE, both with name="PtrToMember" and `type_class=256`
(eTypeClassMemberPointer): DIE `0xcb: uval64=8`; DIE `0x1e9 : uval64=24`

These correspond to two members of Fiber:
```
DW_TAG_member "listHook_"        DW_AT_data_member_location(0x08)  ← uval64=8
DW_TAG_member "globalListHook_"  DW_AT_data_member_location(0x18)  ← uval64=24
```
Clang's ground truth AST correctly produces TemplateArgument decl
(kind=Declaration) with distinct FieldDecl references for each
specialization.
```
22:| | |-ClassTemplateSpecializationDecl 0x36d785b7cc0 <line:43:1, line:56:1> line:44:8 struct mhtraits definition instantiated_from 0x36d785b4238 implicit_instantiation
23-| | | |-DefinitionData pass_in_registers empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init
24-| | | | |-DefaultConstructor exists trivial constexpr defaulted_is_constexpr
25-| | | | |-CopyConstructor simple trivial has_const_param implicit_has_const_param
26-| | | | |-MoveConstructor exists simple trivial
27-| | | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
28-| | | | |-MoveAssignment exists simple trivial needs_implicit
29-| | | | `-Destructor simple irrelevant trivial
30-| | | |-TemplateArgument type 'intrusive::Fiber'
31-| | | | `-RecordType 0x36d785b3fb0 'intrusive::Fiber' canonical
32-| | | |   `-CXXRecord 0x36d78344850 'Fiber'
33-| | | |-TemplateArgument type 'intrusive::list_member_hook<>'
34-| | | | `-RecordType 0x36d785b3c20 'intrusive::list_member_hook<>' canonical
35-| | | |   `-ClassTemplateSpecialization 0x36d78344b48 'list_member_hook'
36-| | | |-TemplateArgument decl '&intrusive::Fiber::listHook_'
37-| | | | `-Field 0x36d785b3e70 'listHook_' 'list_member_hook<>':'intrusive::list_member_hook<>'
38-| | | |-CXXRecordDecl 0x36d785b93a0 <col:1, col:8> col:8 implicit struct mhtraits
39-| | | |-TypeAliasDecl 0x36d785b9470 <line:45:3, col:22> col:9 referenced value_type 'intrusive::Fiber'
40-| | | | `-SubstTemplateTypeParmType 0x36d785b9430 'intrusive::Fiber' sugar typename depth 0 index 0 T
41-| | | |   |-ClassTemplateSpecialization 0x36d785b7cc0 'mhtraits'
42-| | | |   `-RecordType 0x36d785b3fb0 'intrusive::Fiber' canonical
--
78:| | `-ClassTemplateSpecializationDecl 0x36d785b8210 <line:43:1, line:56:1> line:44:8 struct mhtraits definition instantiated_from 0x36d785b4238 implicit_instantiation
79-| |   |-DefinitionData pass_in_registers empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init
80-| |   | |-DefaultConstructor exists trivial constexpr defaulted_is_constexpr
81-| |   | |-CopyConstructor simple trivial has_const_param implicit_has_const_param
82-| |   | |-MoveConstructor exists simple trivial
83-| |   | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
84-| |   | |-MoveAssignment exists simple trivial needs_implicit
85-| |   | `-Destructor simple irrelevant trivial
86-| |   |-TemplateArgument type 'intrusive::Fiber'
87-| |   | `-RecordType 0x36d785b3fb0 'intrusive::Fiber' canonical
88-| |   |   `-CXXRecord 0x36d78344850 'Fiber'
89-| |   |-TemplateArgument type 'intrusive::list_member_hook<>'
90-| |   | `-RecordType 0x36d785b3c20 'intrusive::list_member_hook<>' canonical
91-| |   |   `-ClassTemplateSpecialization 0x36d78344b48 'list_member_hook'
92-| |   |-TemplateArgument decl '&intrusive::Fiber::globalListHook_'
93-| |   | `-Field 0x36d785b3f60 'globalListHook_' 'list_member_hook<>':'intrusive::list_member_hook<>'
94-| |   |-CXXRecordDecl 0x36d785be080 <col:1, col:8> col:8 implicit struct mhtraits
95-| |   |-TypeAliasDecl 0x36d785be150 <line:45:3, col:22> col:9 referenced value_type 'intrusive::Fiber'
96-| |   | `-SubstTemplateTypeParmType 0x36d785be110 'intrusive::Fiber' sugar typename depth 0 index 0 T
97-| |   |   |-ClassTemplateSpecialization 0x36d785b8210 'mhtraits'
98-| |   |   `-RecordType 0x36d785b3fb0 'intrusive::Fiber' canonical
```


### **Full Paste**
```
$ llvm-dwarfdump --debug-info=0x000000cb repro.dwp -c -p
repro.dwp:	file format elf64-x86-64
.debug_info.dwo contents:
0x00000014: DW_TAG_compile_unit
              DW_AT_producer	("clang version 22.1.20 ...)
              DW_AT_language	(DW_LANG_C_plus_plus_14)
              DW_AT_name	("repro.cpp")
              DW_AT_dwo_name	("repro-repro.dwo")
0x0000001a:   DW_TAG_namespace
                DW_AT_name	("intrusive")
0x000000b9:     DW_TAG_structure_type
                  DW_AT_calling_convention	(DW_CC_pass_by_value)
                  DW_AT_name	("mhtraits<intrusive::Fiber, intrusive::list_member_hook<(intrusive::link_mode_type)2>, &intrusive::Fiber::listHook_>")
                  DW_AT_byte_size	(0x01)
                  DW_AT_decl_file	(0x00)
                  DW_AT_decl_line	(44)
0x000000cb:       DW_TAG_template_value_parameter
                    DW_AT_type	(0x0000022d "intrusive::list_member_hook<(intrusive::link_mode_type)2> intrusive::Fiber::*")
                    DW_AT_name	("PtrToMember")
                    DW_AT_const_value	(8)
```
lldb prints: 
```
p name
(const char *) 0x000055f44554c4ca "PtrToMember"
p uval64
(uint64_t) 8
p (unsigned)clang_type.GetTypeClass()
(unsigned int) 256
```
```
$ llvm-dwarfdump --debug-info=0x000001e9 repro.dwp -c -p
repro.dwp:	file format elf64-x86-64
.debug_info.dwo contents:
0x00000014: DW_TAG_compile_unit
              DW_AT_producer	("clang version 22.1.20")
              DW_AT_language	(DW_LANG_C_plus_plus_14)
              DW_AT_name	("repro.cpp")
              DW_AT_dwo_name	("repro-repro.dwo")
0x0000001a:   DW_TAG_namespace
                DW_AT_name	("intrusive")
0x000001d7:     DW_TAG_structure_type
                  DW_AT_calling_convention	(DW_CC_pass_by_value)
                  DW_AT_name	("mhtraits<intrusive::Fiber, intrusive::list_member_hook<(intrusive::link_mode_type)2>, &intrusive::Fiber::globalListHook_>")
                  DW_AT_byte_size	(0x01)
                  DW_AT_decl_file	(0x00)
                  DW_AT_decl_line	(44)
0x000001e9:       DW_TAG_template_value_parameter
                    DW_AT_type	(0x0000022d "intrusive::list_member_hook<(intrusive::link_mode_type)2> intrusive::Fiber::*")
                    DW_AT_name	("PtrToMember")
                    DW_AT_const_value	(24)
```
lldb prints: 
```
 p name
(const char *) 0x000055f44554c4ca "PtrToMember"
p uval64
(uint64_t) 24
p (unsigned)clang_type.GetTypeClass()
(unsigned int) 256
```


  Commit: c3d69eda36f10488512bf2ca4295fc07d096b489
      https://github.com/llvm/llvm-project/commit/c3d69eda36f10488512bf2ca4295fc07d096b489
  Author: Slava Zakharin <szakharin at nvidia.com>
  Date:   2026-03-24 (Tue, 24 Mar 2026)

  Changed paths:
    M mlir/lib/Transforms/Mem2Reg.cpp
    M mlir/test/Dialect/LLVMIR/mem2reg.mlir

  Log Message:
  -----------
  [mlir][mem2reg] Process direct uses inside other regions. (#188359)

We need to add the regions with the direct uses into the list
for processing, otherwise the direct uses will not be removed
and will use the slot after the promotion.

The added LIT test was triggering "after promotion, the slot pointer
should not be used anymore" assertion.


  Commit: 30084d74765c70e9cab4f11e9f2c29f141df299e
      https://github.com/llvm/llvm-project/commit/30084d74765c70e9cab4f11e9f2c29f141df299e
  Author: Peter Collingbourne <pcc at google.com>
  Date:   2026-03-24 (Tue, 24 Mar 2026)

  Changed paths:
    M libcxx/include/ext/hash_map
    A libcxx/test/extensions/gnu/hash_map/non_standard_layout.pass.cpp
    A libcxx/test/extensions/gnu/hash_multimap/non_standard_layout.pass.cpp

  Log Message:
  -----------
  [libc++] Fix type confusion in hash_{,multi}map

The type `__gnu_cxx::hash_{,multi}map` creates objects of type
`std::pair<Key, Value>` and returns pointers to them of type
`std::pair<const Key, Value>`. If either `Key` or `Value` are
non-standard-layout, this is UB, and is furthermore considered by
pointer field protection to be a type confusion, which leads to a
program crash. Fix it by using the correct type for the pair's storage
and using const_cast to form a pointer to the key in the one place where
that is needed.

Reviewers: ldionne

Reviewed By: ldionne

Pull Request: https://github.com/llvm/llvm-project/pull/183223


  Commit: 2a7b0f06d2060dbab8fa38fae7689f2d9048fa9d
      https://github.com/llvm/llvm-project/commit/2a7b0f06d2060dbab8fa38fae7689f2d9048fa9d
  Author: Charlie Li <git at vishwin.info>
  Date:   2026-03-24 (Tue, 24 Mar 2026)

  Changed paths:
    M lldb/bindings/python/python-wrapper.swig

  Log Message:
  -----------
  [lldb] use the Py_REFCNT() macro instead of directly accessing member (#188161)

[PyObject members are not to be accessed
directly](https://docs.python.org/3/c-api/structures.html#c.PyObject),
but rather through macros, in this case `Py_REFCNT()`.

In most, ie Global Interpreter Lock-enabled, CPython cases,
`Py_REFCNT()` expands to accessing `ob_refcnt` anyway. However, in a
free-threaded CPython, combined with disabling the limited API (since it
requires the GIL for now), the direct member does not exist, causing the
build to fail. The macro expands to the correct access method in the
free-threaded configuration.


  Commit: 710c2f0ca5a4e0b93eda0e014af24ed09946f5c5
      https://github.com/llvm/llvm-project/commit/710c2f0ca5a4e0b93eda0e014af24ed09946f5c5
  Author: vporpo <vasileios.porpodas at amd.com>
  Date:   2026-03-24 (Tue, 24 Mar 2026)

  Changed paths:
    M llvm/unittests/SandboxIR/TrackerTest.cpp

  Log Message:
  -----------
  [SandboxIR][Tracker] Test UncondBrInst CondBrInst setters (#187549)

This checks the `setCondition()` and `setSuccessor()` setters introduced
in #187196.


  Commit: d2dab9788a57186a2b3ce927ee8a0fcdb09907a2
      https://github.com/llvm/llvm-project/commit/d2dab9788a57186a2b3ce927ee8a0fcdb09907a2
  Author: Dmitry Sidorov <Dmitry.Sidorov at amd.com>
  Date:   2026-03-24 (Tue, 24 Mar 2026)

  Changed paths:
    M llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
    A llvm/test/CodeGen/SPIRV/bool-vector-bitcast.ll
    A llvm/test/CodeGen/SPIRV/llvm-intrinsics/masked-load-store.ll

  Log Message:
  -----------
  [SPIR-V] Decompose bitcasts involving bool vectors (#187960)

OpTypeBool has no defined bitwidth in SPIR-V, so OpBitcast is invalid
for boolean vector types. Decompose `<N x i1> <-> iN` bitcasts into
element-wise extract/shift/OR and AND/icmp/insert sequences during IR
preprocessing.

Fixes:
https://github.com/kuhar/iree/blob/amdgcn-spirv/spirv-repros/bitcast_crash.ll
and https://github.com/llvm/llvm-project/issues/185815


  Commit: dd9885c0f34fdf64e0de2b07b94ab141274a82e2
      https://github.com/llvm/llvm-project/commit/dd9885c0f34fdf64e0de2b07b94ab141274a82e2
  Author: Zeyi Xu <mitchell.xu2 at gmail.com>
  Date:   2026-03-25 (Wed, 25 Mar 2026)

  Changed paths:
    M clang-tools-extra/clang-tidy/modernize/UseStdFormatCheck.cpp
    M clang-tools-extra/docs/ReleaseNotes.rst
    A clang-tools-extra/test/clang-tidy/checkers/modernize/use-std-format-macro.cpp

  Log Message:
  -----------
  [clang-tidy] Add missing #include insertion in macros for modernize-use-std-format (#188247)

Added missing ``#include`` insertion when the format function call
appears as an argument to a macro.

Part of #175183

---------

Co-authored-by: Victor Chernyakin <chernyakin.victor.j at outlook.com>


  Commit: b60a39e3c223624577d475f278bbc26540adca9c
      https://github.com/llvm/llvm-project/commit/b60a39e3c223624577d475f278bbc26540adca9c
  Author: Derek Schuff <dschuff at chromium.org>
  Date:   2026-03-25 (Wed, 25 Mar 2026)

  Changed paths:
    A lld/test/wasm/lto/thinlto-shared-memory-atomics.ll
    M lld/wasm/LTO.cpp

  Log Message:
  -----------
  [lld][WebAssembly] Propagate +atomics for ThinLTO when using --shared-memory (#188381)

When compiling WebAssembly with ThinLTO, functions are partitioned into
isolated `.bc` modules and dispatched to individual LTO backend threads.
During code generation, the `CoalesceFeaturesAndStripAtomics` pass
iterates over the module to gather the union of target features (like
`+atomics`) attached to defined functions. In particular when not using
threads, it lowers away atomics and TLS variables to their
single-threaded equivalents.

However, if a partitioned module only contains globally defined TLS
variables (e.g. there are no functions, or all functions were fully
inlined or stripped by dropDeadSymbols before ThinLTO optimization), the
module becomes completely devoid of function definitions. The coalescing
pass then falls back to fetching features from the `TargetMachine`.
Because in LTO the `TargetMachine` defaults to a generic target without
atomics enabled, the TLS is lowered away and the `wasm-feature-atomics`
flag is omitted from the resulting ThinLTO object partition, causing
`wasm-ld` to immediately reject it.

To fix this we take advantage of the fact that the linker always knows
whether threads are being used (via the --shared-memory flag). When
using shared memory, we enable +atomics and +bulk-memory in the
TargetMachine that is used for the backend, and the feature coalescing
pass will correctly detect the use of therads.
This only makes sense for atomics because of the global linker
configuration; for other features we wouldn't be able to do this, but we
don't rewrite away any other features anyway.


  Commit: 9999f7fe085333215d95a022e15a12610289c4e3
      https://github.com/llvm/llvm-project/commit/9999f7fe085333215d95a022e15a12610289c4e3
  Author: Zorojuro <sawantsukumar at gmail.com>
  Date:   2026-03-24 (Tue, 24 Mar 2026)

  Changed paths:
    M libc/src/math/atanpif16.h

  Log Message:
  -----------
  [libc] Wrong header guard comment for atanpif16 (#188310)

This PR intends to fix a small nit caused in
[1c1135b](https://github.com/llvm/llvm-project/pull/150400/commits/1c1135b3fccf59537243fc365e83a568f77273ae)
```
#endif // LLVM_LIBC_SRC_MATH_ASINIF16_H
```
to 
```
#endif // LLVM_LIBC_SRC_MATH_ATANPIF16_H
```


  Commit: 408bb4d4b22bbd255eb0b4ea65b9c9d18bf55979
      https://github.com/llvm/llvm-project/commit/408bb4d4b22bbd255eb0b4ea65b9c9d18bf55979
  Author: Zorojuro <sawantsukumar at gmail.com>
  Date:   2026-03-24 (Tue, 24 Mar 2026)

  Changed paths:
    M libc/src/math/totalorderbf16.h
    M libc/src/math/totalordermagbf16.h

  Log Message:
  -----------
  [libc] Wrong guards for `totalorderbf16` and `totalordermagbf16` (#188241)

Currently the guards for `totalorderbf16` and `totalordermagbf16` are as
follows:
```
#ifndef LLVM_LIBC_SRC_MATH_TOTALORDERMAGF16_H
#define LLVM_LIBC_SRC_MATH_TOTALORDERMAGF16_H
-
#endif // LLVM_LIBC_SRC_MATH_TOTALORDERMAGF16_H
```
and 
```
#ifndef LLVM_LIBC_SRC_MATH_TOTALORDERF16_H
#define LLVM_LIBC_SRC_MATH_TOTALORDERF16_H
-
#endif // LLVM_LIBC_SRC_MATH_TOTALORDERF16_H
```
As we can see these are for F16 and not BF16 .
This Pr intends to fix that with correct guards as `TOTALORDERBF16` and
`TOTALORDERMAGBF16`


  Commit: aecfaf11953fe6117a15a26b81d86bb75813e09b
      https://github.com/llvm/llvm-project/commit/aecfaf11953fe6117a15a26b81d86bb75813e09b
  Author: khaki3 <47756807+khaki3 at users.noreply.github.com>
  Date:   2026-03-24 (Tue, 24 Mar 2026)

  Changed paths:
    M flang/lib/Optimizer/OpenACC/Support/RegisterOpenACCExtensions.cpp
    M flang/test/Fir/OpenACC/offload-livein-value-canonicalization.fir

  Log Message:
  -----------
  [flang][acc] Handle fir.undefined with OutlineRematerializationOpInterface in OffloadLiveInValueCanonicalization (#188325)

Example:
```fortran
!$ACC KERNELS PRESENT(CG, W1)
  CG(1:W1%WDES1%NPL, NN) = W1%CPTWFP(1:W1%WDES1%NPL)
  CPROJ(:, NN) = W1%CPROJ(1:SIZE(CPROJ,1))
!$ACC END KERNELS
```

When compiling OpenACC kernels containing array section assignments of
rank-2 arrays with a scalar index in one dimension (e.g. `CG(1:NPL,
NN)`), the Fortran lowering creates a `fir.slice` where collapsed
(scalar) dimensions use `fir.undefined index` as the stop/step values.
`SliceOp::getOutputRank()` relies on `getDefiningOp()` returning
`fir::UndefOp` to identify these collapsed dimensions and compute the
correct output rank.

When `fir.undefined` values defined outside an offload region are used
inside it, `gpu-kernel-outlining` turns them into function arguments.
Since function arguments have no defining op (`getDefiningOp()` returns
`nullptr`), `getOutputRank()` no longer recognizes the collapsed
dimensions, computing rank 2 instead of rank 1. This causes the
`fir.rebox` verifier to fail with:

```
'fir.rebox' op result type rank and rank after applying slice operand must match
```

Fix: Register `OutlineRematerializationOpInterface` for `fir::UndefOp`
(and `fir::SliceOp`) in `RegisterOpenACCExtensions.cpp`. This causes
`OffloadLiveInValueCanonicalization` to clone these operations inside
the offload region before outlining, preserving the `fir::UndefOp`
identity so that `getOutputRank()` correctly identifies collapsed
dimensions.


  Commit: a32d903ceeddd2664c3a21286c6aa4727261595d
      https://github.com/llvm/llvm-project/commit/a32d903ceeddd2664c3a21286c6aa4727261595d
  Author: Vitaly Buka <vitalybuka at google.com>
  Date:   2026-03-24 (Tue, 24 Mar 2026)

  Changed paths:
    M bolt/docs/index.rst
    A bolt/docs/profiles.md
    M bolt/include/bolt/Profile/DataAggregator.h
    M bolt/include/bolt/Profile/DataReader.h
    M bolt/lib/Profile/DataAggregator.cpp
    A bolt/test/X86/Inputs/pre-aggregated-buildid.txt
    A bolt/test/X86/pre-aggregated-perf-buildid.test
    M clang-tools-extra/clang-tidy/modernize/UseStdFormatCheck.cpp
    M clang-tools-extra/docs/ReleaseNotes.rst
    A clang-tools-extra/test/clang-tidy/checkers/modernize/use-std-format-macro.cpp
    M clang/test/InstallAPI/extra-exclude-headers.test
    M clang/test/InstallAPI/hiddens.test
    M flang/lib/Optimizer/OpenACC/Support/RegisterOpenACCExtensions.cpp
    M flang/test/Fir/OpenACC/offload-livein-value-canonicalization.fir
    M libc/src/math/atanpif16.h
    M libc/src/math/totalorderbf16.h
    M libc/src/math/totalordermagbf16.h
    M libcxx/include/ext/hash_map
    A libcxx/test/extensions/gnu/hash_map/non_standard_layout.pass.cpp
    A libcxx/test/extensions/gnu/hash_multimap/non_standard_layout.pass.cpp
    A lld/test/wasm/lto/thinlto-shared-memory-atomics.ll
    M lld/wasm/LTO.cpp
    M lldb/bindings/python/python-wrapper.swig
    M lldb/packages/Python/lldbsuite/test/lldbtest.py
    M lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
    M lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
    M lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h
    A lldb/test/API/lang/cpp/non-type-template-param-member-ptr/Makefile
    A lldb/test/API/lang/cpp/non-type-template-param-member-ptr/TestCppNonTypeTemplateParamPtrToMember.py
    A lldb/test/API/lang/cpp/non-type-template-param-member-ptr/main.cpp
    M llvm/include/llvm/CodeGen/GlobalISel/IRTranslator.h
    M llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
    M llvm/include/llvm/CodeGen/LowLevelTypeUtils.h
    M llvm/include/llvm/CodeGen/TargetLowering.h
    M llvm/include/llvm/CodeGenTypes/LowLevelType.h
    M llvm/lib/CodeGen/GlobalISel/CallLowering.cpp
    M llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
    M llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
    M llvm/lib/CodeGen/GlobalISel/LegalizeMutations.cpp
    M llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
    M llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp
    M llvm/lib/CodeGen/GlobalISel/Utils.cpp
    M llvm/lib/CodeGen/LowLevelTypeUtils.cpp
    M llvm/lib/CodeGen/MIRParser/MIParser.cpp
    M llvm/lib/CodeGen/MachineVerifier.cpp
    M llvm/lib/CodeGenTypes/LowLevelType.cpp
    M llvm/lib/Target/AMDGPU/AMDGPUCombinerHelper.cpp
    M llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
    M llvm/lib/Target/SPIRV/CMakeLists.txt
    M llvm/lib/Target/SPIRV/SPIRV.h
    A llvm/lib/Target/SPIRV/SPIRVCtorDtorLowering.cpp
    A llvm/lib/Target/SPIRV/SPIRVCtorDtorLowering.h
    M llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
    M llvm/lib/Target/SPIRV/SPIRVTargetMachine.cpp
    M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
    M llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-subvector.ll
    M llvm/test/CodeGen/AArch64/GlobalISel/pr168872.ll
    M llvm/test/CodeGen/AArch64/GlobalISel/translate-gep.ll
    M llvm/test/CodeGen/AArch64/GlobalISel/translate-sve-formal-argument-multiple.ll
    M llvm/test/CodeGen/AArch64/GlobalISel/translate-sve-formal-argument.ll
    M llvm/test/CodeGen/MIR/AArch64/parse-low-level-type-invalid0.mir
    M llvm/test/CodeGen/MIR/AArch64/parse-low-level-type-invalid1.mir
    M llvm/test/CodeGen/MIR/AArch64/parse-low-level-type-invalid2.mir
    M llvm/test/CodeGen/MIR/AArch64/parse-low-level-type-invalid3.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err0.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err1.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err10.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err11.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err12.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err13.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err14.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err15.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err2.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err3.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err4.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err5.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err6.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err7.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err8.mir
    M llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err9.mir
    M llvm/test/CodeGen/MIR/WebAssembly/typed-immediate-operand-invalid0.mir
    M llvm/test/CodeGen/MIR/WebAssembly/typed-immediate-operand-invalid1.mir
    A llvm/test/CodeGen/SPIRV/bool-vector-bitcast.ll
    A llvm/test/CodeGen/SPIRV/ctor-dtor-lowering-ir.ll
    A llvm/test/CodeGen/SPIRV/ctor-dtor-lowering.ll
    A llvm/test/CodeGen/SPIRV/ctor-dtor-no-openmp-ir.ll
    M llvm/test/CodeGen/SPIRV/llc-pipeline.ll
    A llvm/test/CodeGen/SPIRV/llvm-intrinsics/masked-load-store.ll
    M llvm/test/TableGen/GlobalISelEmitter/GlobalISelEmitter.td
    M llvm/test/TableGen/GlobalISelEmitter/HwModes.td
    A llvm/test/Transforms/SLPVectorizer/order-reduction-infinite-loop.ll
    M llvm/unittests/CodeGen/GlobalISel/CMakeLists.txt
    R llvm/unittests/CodeGen/GlobalISel/IRTranslatorBF16Test.cpp
    M llvm/unittests/SandboxIR/TrackerTest.cpp
    M llvm/utils/TableGen/Common/CMakeLists.txt
    M llvm/utils/TableGen/Common/GlobalISel/GlobalISelMatchTable.cpp
    M llvm/utils/TableGen/Common/GlobalISel/GlobalISelMatchTableExecutorEmitter.cpp
    M llvm/utils/TableGen/Common/GlobalISel/GlobalISelMatchTableExecutorEmitter.h
    M mlir/lib/Transforms/Mem2Reg.cpp
    M mlir/test/Dialect/LLVMIR/mem2reg.mlir

  Log Message:
  -----------
  Merge branch 'main' into users/vitalybuka/spr/compiler-rt-suppress-unused-variable-report-in-emutls


Compare: https://github.com/llvm/llvm-project/compare/56b5f19fccc4...a32d903ceedd

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