LLVM/project 2c8c2bdclang/test/CodeGenHLSL/builtins mad.hlsl, clang/test/CodeGenHLSL/convergence for.hlsl while.hlsl

[HLSL][DirectX] Emit convergence control tokens when targeting DirectX (#188792)

This pr allows codegen to generate convergence control tokens. This
allows for a more accurate description of convergence behaviour to
prevent (or allow) invalid control flow graph transforms. As noted, the
use of convergence control tokens is the ideal norm and this follows
that by enabling it for `DirectX`.

This was done now under the precedent of preventing a convergent exit
condition of a loop from being illegally moved across control flow. Test
cases for this are explicitly added.

Please see the individual commits for logically similar chunks.
Unfortunately, it is tricky to stage this in smaller individual commits.

Resolves https://github.com/llvm/llvm-project/issues/180621.

https://github.com/llvm/llvm-project/pull/188537 is a pre-requisite of
this passing HLSL offload suite tests.

Assisted by: Github Copilot
DeltaFile
+72-0llvm/test/Transforms/LoopRotate/convergent-controlled.ll
+70-0llvm/test/Transforms/IndVarSimplify/convergent-controlled-loop.ll
+70-0llvm/test/Transforms/SimpleLoopUnswitch/convergent-controlled.ll
+28-26clang/test/CodeGenHLSL/convergence/for.hlsl
+24-24clang/test/CodeGenHLSL/builtins/mad.hlsl
+21-19clang/test/CodeGenHLSL/convergence/while.hlsl
+285-6967 files not shown
+697-16373 files

LLVM/project d534b56llvm/lib/Target/AMDGPU AMDGPUMCResourceInfo.cpp AMDGPUResourceUsageAnalysis.cpp, llvm/test/CodeGen/AMDGPU object-linking-local-resources.ll

[AMDGPU] Report only local per-function resource usage when object linking is enabled

With object linking the linker aggregates resource usage across TUs, so
compile-time pessimism and call-graph propagation duplicate the linker's work or
pollute its inputs.

In this mode, skip the per-callsite conservative bumps in
`AMDGPUResourceUsageAnalysis` and assign each resource symbol in
`AMDGPUMCResourceInfo` a concrete local constant instead of building call-graph
`max`/`or` expressions.
DeltaFile
+109-0llvm/test/CodeGen/AMDGPU/object-linking-local-resources.ll
+26-8llvm/lib/Target/AMDGPU/AMDGPUMCResourceInfo.cpp
+10-1llvm/lib/Target/AMDGPU/AMDGPUResourceUsageAnalysis.cpp
+4-0llvm/lib/Target/AMDGPU/AMDGPUMCResourceInfo.h
+149-94 files

LLVM/project 8f89591llvm/lib/Target/AMDGPU AMDGPURegBankLegalizeRules.cpp, llvm/test/CodeGen/AMDGPU llvm.amdgcn.global.prefetch.ll llvm.amdgcn.flat.prefetch.ll

AMDGPU/GlobalISel: RegBankLegalize rules for flat/global prefetch (#192764)
DeltaFile
+4-0llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
+1-1llvm/test/CodeGen/AMDGPU/llvm.amdgcn.global.prefetch.ll
+1-1llvm/test/CodeGen/AMDGPU/llvm.amdgcn.flat.prefetch.ll
+6-23 files

LLVM/project 133eb8cclang/test/CodeGen/AArch64 v9.7a-neon-mmla-intrinsics.c, clang/test/CodeGen/AArch64/sve-intrinsics acle_sve_mmla-f16.c acle_sve_mmla-bf16.c

[AArch64][clang][llvm] Add ACLE Armv9.7 MMLA intrinsics

Implement new ACLE matrix multiply-accumulate intrinsics for Armv9.7:

```c
  // 16-bit floating-point matrix multiply-accumulate.
  // Only if __ARM_FEATURE_SVE_B16MM
  // Variant also available for _f16 if (__ARM_FEATURE_SVE2p2 && __ARM_FEATURE_F16MM).
  svbfloat16_t svmmla[_bf16](svbfloat16_t zda, svbfloat16_t zn, svbfloat16_t zm);

  // Half-precision matrix multiply accumulating to single-precision
  // instruction from Armv9.7-A. Requires the +f16f32mm architecture extension.
  float32x4_t vmmlaq_f32_f16(float32x4_t r, float16x8_t a, float16x8_t b)

  // Non-widening half-precision matrix multiply instruction. Requires the
  // +f16mm architecture extension.
  float16x8_t vmmlaq_f16_f16(float16x8_t r, float16x8_t a, float16x8_t b)
```
DeltaFile
+47-0clang/test/CodeGen/AArch64/v9.7a-neon-mmla-intrinsics.c
+32-0clang/test/CodeGen/AArch64/sve-intrinsics/acle_sve_mmla-f16.c
+32-0clang/test/Sema/AArch64/arm_sve_non_streaming_only_sve_AND_sve2p2_AND_f16mm.c
+32-0clang/test/CodeGen/AArch64/sve-intrinsics/acle_sve_mmla-bf16.c
+32-0clang/test/Sema/AArch64/arm_sve_non_streaming_only_sve_AND_sve-b16mm.c
+16-0llvm/test/CodeGen/AArch64/sve-fmmla-f16.ll
+191-014 files not shown
+297-1220 files

LLVM/project 58fb00fllvm/lib/Target/AMDGPU AMDGPURegBankLegalizeRules.cpp, llvm/test/CodeGen/AMDGPU llvm.amdgcn.unreachable.ll

AMDGPU/GlobalISel: RegBankLegalize rules for amdgcn_unreachable (#192762)
DeltaFile
+2-0llvm/test/CodeGen/AMDGPU/llvm.amdgcn.unreachable.ll
+1-0llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
+3-02 files

LLVM/project dcbb5c8llvm/utils/TableGen/Common/GlobalISel GlobalISelMatchTable.cpp

[GlobalISel] Fix -Wunused-variable (#193009)

These variables are only used in assertions and set outside of the
variable definition, so mark them [[maybe_unused]].
DeltaFile
+2-2llvm/utils/TableGen/Common/GlobalISel/GlobalISelMatchTable.cpp
+2-21 files

LLVM/project 74049f6llvm/lib/Transforms/Vectorize VectorCombine.cpp, llvm/test/Transforms/VectorCombine/AArch64 shuffletoidentity.ll

[VectorCombine] Fix transitive Uses in foldShuffleToIdentity (#188989)

The Uses in foldShuffleToIdentity is intended to detect where an operand
is used to distinguish between splats, identities and concats of the
same value. When looking through multiple unsimplified shuffles the same
Use could be both a splat and a identity though. This patch changes the
Use to a Value and an original Use, so that even if we are looking
through multiple vectors we recognise the splat vs identity vs concat of
each use correctly.

Fixes #180338

(cherry picked from commit fd40c606652137706bc336ef80ed1814ab3d3680)
DeltaFile
+82-73llvm/lib/Transforms/Vectorize/VectorCombine.cpp
+131-0llvm/test/Transforms/VectorCombine/AArch64/shuffletoidentity.ll
+4-2llvm/test/Transforms/VectorCombine/LoongArch/shuffle-identity-miscompile.ll
+217-753 files

LLVM/project a01a450llvm/test/Transforms/VectorCombine/LoongArch shuffle-identity-miscompile.ll lit.local.cfg

[NFC][test] Precommit test for pr188989 (#188667)

Precommit test for #188989.

This test case covers a scenario in the vector combine
foldShuffleToIdentity function where incorrect folding was caused when
different shuffle sequences shared the same initial Use *. This issue
may be due to cost model differences and currently reproduces only on
LoongArch for this test case.

(cherry picked from commit 3e015b89e8bd9c71f6bb1cf38747d2862f5d5a3d)
DeltaFile
+22-0llvm/test/Transforms/VectorCombine/LoongArch/shuffle-identity-miscompile.ll
+4-0llvm/test/Transforms/VectorCombine/LoongArch/lit.local.cfg
+26-02 files

LLVM/project 9f29c1ellvm/lib/Target/X86 X86ISelLoweringCall.cpp, llvm/test/CodeGen/X86 musttail-struct.ll

[X86] Fix missing ByValTemporaries update in CopyViaTemp path for musttail calls (#190540)

This fixes a miscompilation in musttail calls with byval arguments on
X86.

In the CopyViaTemp path, a temporary stack object is created and the
argument is copied into it.
However, the temporary is not recorded in ByValTemporaries,
so the final lowering phase does not emit the copy to the real outgoing
argument slot.

As a result, the callee may read incorrect values from the stack.

Fix this by recording the temporary in ByValTemporaries so that the
final lowering step correctly copies the argument to the expected stack
location.

Reproducer: https://github.com/llvm/llvm-project/issues/190429
(cherry picked from commit abd502a44e5ef19a302d943eeb017c29124b96e9)
DeltaFile
+45-13llvm/test/CodeGen/X86/musttail-struct.ll
+1-0llvm/lib/Target/X86/X86ISelLoweringCall.cpp
+46-132 files

LLVM/project 6796efelibsycl/include/sycl/__impl usm_functions.hpp

[libsycl] Fix _LIBSYCL_EXPORT placement (#192243)

Current placement of _LIBSYCL_EXPORT in usm_functions.hpp causes
compilation errors on Windows and is not aligned with other header
files.
DeltaFile
+10-10libsycl/include/sycl/__impl/usm_functions.hpp
+10-101 files

LLVM/project 2f0b2ffruntimes CMakeLists.txt, runtimes/cmake config-Fortran.cmake

Partial inlining of config-Fortran
DeltaFile
+34-5runtimes/CMakeLists.txt
+0-18runtimes/cmake/config-Fortran.cmake
+34-232 files

LLVM/project fd1b872llvm/include/llvm/Analysis ScalarEvolutionPatternMatch.h, llvm/include/llvm/IR PatternMatch.h

[PatternMatchHelpers] Factor deferred and bind matchers (NFC) (#191373)

Factor bind_ty and deferredval_ty as match_bind and match_deferred from
existing PatternMatch implementations into PatternMatchHelpers.
DeltaFile
+37-84llvm/include/llvm/IR/PatternMatch.h
+20-32llvm/include/llvm/Analysis/ScalarEvolutionPatternMatch.h
+10-30llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h
+21-0llvm/include/llvm/Support/PatternMatchHelpers.h
+1-1llvm/lib/Transforms/Scalar/NaryReassociate.cpp
+89-1475 files

LLVM/project df6792blldb/docs/use links.rst

[lldb][docs] Add conference talks to the links page (#192724)

At EuroLLVM, I mentioned a previous LLDB talk and realized they would be
a lot more discoverable if we linked them from the website.
DeltaFile
+28-0lldb/docs/use/links.rst
+28-01 files

LLVM/project 6b201d5llvm/lib/Transforms/Vectorize LoopVectorize.cpp, llvm/test/Transforms/LoopVectorize/AArch64 scalable-strict-fadd.ll sve-wide-lane-mask.ll

[LV][NFC] Rename PreferPredicateOverEpilogue to TailFoldingPolicy (#191803)

Rename the -prefer-predicate-over-epilogue flag and its associated
enum values to use 'TailFold' terminology instead of 'Predicate'. The
term 'Predicate' is overloaded in the vectorizer context and would
cause further confusion as more tail-folding styles are added.
DeltaFile
+23-34llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+6-6llvm/test/Transforms/LoopVectorize/AArch64/scalable-strict-fadd.ll
+5-5llvm/test/Transforms/LoopVectorize/RISCV/partial-reduce-dot-product.ll
+4-4llvm/test/Transforms/LoopVectorize/VPlan/RISCV/vplan-vp-intrinsics-reduction.ll
+4-4llvm/test/Transforms/LoopVectorize/AArch64/sve-wide-lane-mask.ll
+4-4llvm/test/Transforms/LoopVectorize/RISCV/tail-folding-intermediate-store.ll
+46-57142 files not shown
+260-271148 files

LLVM/project eff4d47llvm/lib/Transforms/Vectorize VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize/AArch64 transform-narrow-interleave-to-widen-memory-multi-block.ll

[VPlan] CSE ScalarIVSteps recipes (#191307)

Extend getOpCodeOrIntrinsicID to return a pseudo opcode for
ScalarIVSteps, so it can be CSE'd, when extended to also check the
InductionOpcode.
DeltaFile
+14-7llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+6-15llvm/test/Transforms/LoopVectorize/X86/cost-conditional-branches.ll
+1-3llvm/test/Transforms/LoopVectorize/X86/vplan-single-bit-ind-var-width-4.ll
+1-2llvm/test/Transforms/LoopVectorize/AArch64/transform-narrow-interleave-to-widen-memory-multi-block.ll
+22-274 files

LLVM/project 94482e8lldb/source/Plugins/Process/wasm ProcessWasm.cpp

[lldb] Fix crash when evaluating expressions in Wasm targets (#192893)

LLDB crashes with "LLVM ERROR: Incompatible object format!" when
evaluating expressions while debugging WebAssembly because ProcessWasm
never disables JIT. RuntimeDyld only supports ELF, MachO, and COFF
object formats, so attempting to JIT-compile an expression for a Wasm
target produces the aforementioned fatal error.

This PR avoids the crash by calling `SetCanJIT(false)` in the
`ProcessWasm` ctor. Simple expressions will still work via the IR
interpreter, while expression requiring the JIT now show a proper error
message instead of crashing.

Fixes #179915
DeltaFile
+3-0lldb/source/Plugins/Process/wasm/ProcessWasm.cpp
+3-01 files

LLVM/project ea897e6clang/include/clang/AST ASTContext.h, clang/lib/AST ASTContext.cpp ItaniumMangle.cpp

[clang] implement CWG2064: ignore value dependence for decltype

The 'decltype' for a value-dependent (but non-type-dependent) should be known,
so this patch makes them non-opaque instead.

This patch also implements what's neceessary to allow overloading
on pure differences in instantiation dependence, making `std::void_t`
usable for SFINAE purposes.

This also readds a few test cases from da98651, which was a previous attempt
at resolving CWG2064.

Fixes #8740
Fixes #61818
Fixes #190388
DeltaFile
+906-175clang/lib/AST/ASTContext.cpp
+312-12clang/test/SemaTemplate/instantiation-dependence.cpp
+151-93clang/lib/AST/ItaniumMangle.cpp
+76-68clang/lib/AST/Type.cpp
+76-48clang/lib/Sema/SemaTemplate.cpp
+93-16clang/include/clang/AST/ASTContext.h
+1,614-41282 files not shown
+2,373-77588 files

LLVM/project 916f9fdllvm/lib/Target/SPIRV SPIRVEmitIntrinsics.cpp, llvm/test/CodeGen/SPIRV/pointers getelementptr-byte-addressing-array.ll

[SPIR-V] Handle [N x i8] byte addressing in SPIRVEmitIntrinsics

LLVM started generating [N x i8] types on array indexing GEPs. Emit
intrinsiscs did not know what to do with it so it was generating a
cast to [N x i8] to perform the GEP. This does not work in logical
addressing.

The handle this, we expand the `i8` gep handling for logical addressing
mode to work for arbitrary size byte addressing.
DeltaFile
+52-18llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
+64-0llvm/test/CodeGen/SPIRV/pointers/getelementptr-byte-addressing-array.ll
+116-182 files

LLVM/project 46c427bllvm/lib/Transforms/Vectorize LoopVectorize.cpp

[VPlan] Remove dead partial reduction case in addReductionResultComputation. NFCI (#192985)

Partial reductions don't exist until createPartialReductions, which is
called after addReductionResultComputation. So we don't need to check
partial reductions anymore. I presume this happened after #167851
DeltaFile
+1-6llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+1-61 files

LLVM/project afadf61mlir/include/mlir/Dialect/OpenMP/Utils Utils.h, mlir/lib/Dialect/OpenMP CMakeLists.txt

[MLIR][OpenMP] Unify device shared memory logic

This patch creates a utils library for the OpenMP dialect with functions
used by MLIR to LLVM IR translation as well as the stack-to-shared pass
to determine which allocations must use local stack memory or device
shared memory.
DeltaFile
+10-93mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+101-0mlir/lib/Dialect/OpenMP/Utils/Utils.cpp
+13-85mlir/lib/Dialect/OpenMP/Transforms/StackToShared.cpp
+53-0mlir/include/mlir/Dialect/OpenMP/Utils/Utils.h
+13-0mlir/lib/Dialect/OpenMP/Utils/CMakeLists.txt
+1-0mlir/lib/Dialect/OpenMP/CMakeLists.txt
+191-1782 files not shown
+193-1788 files

LLVM/project d904294flang/test/Integration/OpenMP target-use-device-nested.f90 threadprivate-target-device.f90, llvm/unittests/Frontend OpenMPIRBuilderTest.cpp

[MLIR][OpenMP][OMPIRBuilder] Improve shared memory checks

This patch refines checks to decide whether to use device shared memory or
regular stack allocations. In particular, it adds support for parallel regions
residing on standalone target device functions.

The changes are:
- Shared memory is introduced for `omp.target` implicit allocations, such as
those related to privatization and mapping, as long as they are shared across
threads in a nested parallel region.
- Standalone target device functions are interpreted as being part of a Generic
kernel, since the fact that they are present in the module after filtering
means they must be reachable from a target region.
- Prevent allocations whose only shared uses inside of an `omp.parallel` region
are as part of a `private` clause from being moved to device shared memory.
DeltaFile
+97-36mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+109-0offload/test/offloading/fortran/target-generic-outlined-loops.f90
+76-0mlir/test/Target/LLVMIR/openmp-target-private-shared-mem.mlir
+22-16llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
+12-13flang/test/Integration/OpenMP/target-use-device-nested.f90
+6-8flang/test/Integration/OpenMP/threadprivate-target-device.f90
+322-734 files not shown
+331-8110 files

LLVM/project c71ed50lldb/source/Plugins/Process/gdb-remote ProcessGDBRemote.cpp ProcessGDBRemote.h

[lldb] Override UpdateBreakpointSites in ProcessGDBRemote to use MultiBreakpoint

This concludes the implementation of MultiBreakpoint by actually using
the new packet to batch breakpoint requests.

https://github.com/llvm/llvm-project/pull/192910
DeltaFile
+174-0lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
+8-0lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
+182-02 files

LLVM/project b504803clang/docs ReleaseNotes.rst, clang/lib/AST StmtProfile.cpp

[clang] fix profiling of pack index expressions (#192810)

This replaces a few incorrect calls of VisitExpr on subcomponents, which
should have been plain `Visit` instead, because the former just
implements the commonality between all kind-specific profile functions
(marking the class kind and visiting children).

So this for example would visit a DeclRefExpr but not actually profile
any of it's properties, like the parameter declaration, so it would fail
to distinguish between DeclRefExps referencing distinct entities.

This also adds a call to record the PackIndexExpr's kind in the profile,
to avoid false positives when comparing expressions with different
kinds.
DeltaFile
+10-0clang/test/SemaCXX/cxx2c-pack-indexing.cpp
+3-3clang/lib/AST/StmtProfile.cpp
+2-1clang/docs/ReleaseNotes.rst
+15-43 files

LLVM/project 9813b8alldb/source/Plugins/Process/gdb-remote ProcessGDBRemote.cpp ProcessGDBRemote.h

[lldb] Override UpdateBreakpointSites in ProcessGDBRemote to use MultiBreakpoint

This concludes the implementation of MultiBreakpoint by actually using
the new packet to batch breakpoint requests.

https://github.com/llvm/llvm-project/pull/192910
DeltaFile
+174-0lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
+8-0lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
+182-02 files

LLVM/project 474bad5lldb/include/lldb/Target Process.h, lldb/source/Plugins/Process/Utility StopInfoMachException.cpp

[lldb] Implement delayed breakpoints

This patch changes the Process class so that it delays *physically*
enabling/disabling breakpoints until the process is about to
resume/detach/be destroyed, potentially reducing the packets transmitted
by batching all breakpoints together.

Most classes only need to know whether a breakpoint is "logically"
enabled, as opposed to "physically" enabled (i.e. the remote server has
actually enabled the breakpoint). However, lower level classes like
derived Process classes, or StopInfo may actually need to know whether
the breakpoint was physically enabled. As such, this commit also adds a
"IsPhysicallyEnabled" API.

https://github.com/llvm/llvm-project/pull/192910
DeltaFile
+95-8lldb/source/Target/Process.cpp
+30-1lldb/include/lldb/Target/Process.h
+6-6lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
+5-3lldb/source/Plugins/Process/Utility/StopInfoMachException.cpp
+4-2lldb/source/Target/ThreadPlanStepOverBreakpoint.cpp
+5-0lldb/source/Target/TargetProperties.td
+145-203 files not shown
+149-249 files

LLVM/project 7c8fb2eflang/lib/Optimizer/OpenACC/Support FIROpenACCTypeInterfaces.cpp, flang/test/Fir/OpenACC pointer-like-interface-cast.mlir

[mlir][acc][flang] Add genCast API to PointerLikeType (#192720)

Introduces new API for PointerLikeType named genCast which can be used
for generating IR that does type conversions. This is implemented for
FIR reference types, memref, and LLVM ptr.
DeltaFile
+166-1mlir/unittests/Dialect/OpenACC/OpenACCTypeInterfacesTest.cpp
+71-0mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp
+68-0flang/test/Fir/OpenACC/pointer-like-interface-cast.mlir
+61-1mlir/test/lib/Dialect/OpenACC/TestPointerLikeTypeInterface.cpp
+36-0mlir/test/Dialect/OpenACC/pointer-like-interface-cast.mlir
+32-0flang/lib/Optimizer/OpenACC/Support/FIROpenACCTypeInterfaces.cpp
+434-23 files not shown
+467-29 files

LLVM/project 4f2ddf5mlir/include/mlir/Dialect/OpenMP/Transforms Passes.td, mlir/lib/Dialect/OpenMP CMakeLists.txt

[Flang][OpenMP] Add pass to replace allocas with device shared memory

This patch introduces a new OpenMP MLIR pass, only for target device modules,
that identifies `llvm.alloca` operations that should use device shared
memory and replaces them with pairs of `omp.alloc_shared_mem` and
`omp.free_shared_mem` operations.

This works in conjunction to the MLIR to LLVM IR translation pass' handling of
privatization, mapping and reductions in the OpenMP dialect to properly select
the right memory space for allocations based on where they are made and where
they are used.

This pass, in particular, handles explicit stack allocations in MLIR, whereas
the aforementioned translation pass takes care of implicit ones represented by
entry block arguments.
DeltaFile
+196-0mlir/lib/Dialect/OpenMP/Transforms/StackToShared.cpp
+149-0mlir/test/Dialect/OpenMP/stack-to-shared.mlir
+1-22mlir/lib/Dialect/OpenMP/CMakeLists.txt
+21-0mlir/lib/Dialect/OpenMP/IR/CMakeLists.txt
+18-0mlir/include/mlir/Dialect/OpenMP/Transforms/Passes.td
+10-0mlir/lib/Dialect/OpenMP/Transforms/CMakeLists.txt
+395-225 files not shown
+415-2311 files

LLVM/project c67c71bclang/docs ReleaseNotes.rst, clang/lib/AST StmtProfile.cpp

[clang] fix profiling of pack index expressions

This replaces a few incorrect calls of VisitExpr on subcomponents,
which should have been plain `Visit` instead, because the former
just implements the commonality between all kind-specific profile
functions (marking the class kind and visiting children).

So this for example would visit a DeclRefExpr but not actually profile
any of it's properties, like the parameter declaration, so it would fail
to distinguish between DeclRefExps referencing distinct entities.

This also adds a call to record the PackIndexExpr's kind in the profile,
to avoid false positives when comparing expressions with different kinds.
DeltaFile
+10-0clang/test/SemaCXX/cxx2c-pack-indexing.cpp
+3-3clang/lib/AST/StmtProfile.cpp
+2-1clang/docs/ReleaseNotes.rst
+15-43 files

LLVM/project bc8c168clang/docs ReleaseNotes.rst, clang/lib/Sema SemaTemplateInstantiate.cpp SemaTemplateDeductionGuide.cpp

[clang] fix matching constrained out-of-line definitions of class specialization member function templates (#192806)

The method which gathered the template arguments for transforming
constraints was incorrectly skipping adding the arguments for function
templates which are members of class template specializations.

This fixes that, and removes an undocumented workaround for template
alias CTAD.

Also adds a test case showing #139276 caused a profiling issue with
PackIndexExprs,
which for the tests added in that PR gave the false impression they were
fixing the
problem, but were actually causing the implementation to be too
accepting, which
masked the bug solved in this patch.
DeltaFile
+46-48clang/lib/Sema/SemaTemplateInstantiate.cpp
+76-2clang/test/SemaTemplate/concepts-out-of-line-def.cpp
+6-45clang/lib/Sema/SemaTemplateDeductionGuide.cpp
+1-0clang/docs/ReleaseNotes.rst
+129-954 files

LLVM/project f0f38b7llvm/lib/CodeGen MIRPrinter.cpp, llvm/utils update_mir_regclass_numbers

[MIR] Always print symbolic INLINEASM operands

We don't need the flag now that all tests are updated to use
symbolic operands.

Remove the update_mir_regclass_numbers script as it shouldn't be
needed anymore.
DeltaFile
+0-27llvm/utils/update_mir_regclass_numbers
+1-7llvm/lib/CodeGen/MIRPrinter.cpp
+1-342 files