LLVM/project 33775a5mlir/lib/Dialect/MemRef/IR MemRefMemorySlot.cpp, mlir/test/Dialect/MemRef sroa.mlir mem2reg.mlir

[mlir][memref] Avoid overflow in mem2reg alloca checks (#205245)

This patch fixes a crash in memory slot promotion under extremely large
static memrefs while handling element-count overflow.

Root Cause: 
`MemRefMemorySlot.cpp` currently checks promotability with: `if
(getType().getNumElements() > MaxElementsToPromote)`

For extremely large static memref such as:
`memref<9223372036854775807x3xi32>`

This will result `ShapedType::getNumElements` overflows and triggers
assertion in `BuiltinTypeInterfaces.cpp:86:`:
`assert(num.has_value() && "integer overflow in element count
computation")`

Fix:
The changes in `AllocaOp::getPromotableSlots` can detect total element

    [5 lines not shown]
DeltaFile
+15-5mlir/lib/Dialect/MemRef/IR/MemRefMemorySlot.cpp
+12-0mlir/test/Dialect/MemRef/sroa.mlir
+12-0mlir/test/Dialect/MemRef/mem2reg.mlir
+39-53 files

LLVM/project 17219b3clang/include/clang/AST Expr.h

[clang][nfc] Formatting fix for SubobjectAdjustment struct in Expr.h (#217803)

I was hitting an unnecessary reformat in another change and it's just a
minor formatting issue.
DeltaFile
+24-23clang/include/clang/AST/Expr.h
+24-231 files

LLVM/project fda91ddllvm/lib/Transforms/Utils ScalarEvolutionExpander.cpp, llvm/test/CodeGen/Thumb2 mve-gather-scatter-optimisation.ll mve-gather-increment.ll

[SCEVExpander] Consider values below the hoisted insert point for reuse. (#217452)

expand() computes an insertion point before looking for an existing
value that already computes the expression: for an expression that is
computable in the loop, the point is hoisted to the loop header so that
the result dominates any user in the loop. A value that already computes
the expression but lives below that point is then rejected on position
alone, even though it dominates the point we were asked to expand at.

Retry the lookup at the requested point, and remember the result for the
location it is available at rather than for the hoisted point for a
point it does not dominate would hand it to a later expansion there.

This improves expansions in most cases in practice on a number of
workloads:
https://github.com/dtcxzyw/llvm-opt-benchmark-nightly/pull/965. In 9 out
of 163 files, there are slight increases in instruction count, but it is
a clear improvement in the majority of changes.

PR: https://github.com/llvm/llvm-project/pull/217452
DeltaFile
+108-0llvm/test/Transforms/PhaseOrdering/AArch64/scev-expansion.ll
+41-41llvm/test/CodeGen/Thumb2/mve-gather-increment.ll
+33-37llvm/test/Transforms/LoopUnroll/runtime-loop-multiple-exits.ll
+21-20llvm/test/CodeGen/Thumb2/mve-gather-scatter-optimisation.ll
+16-6llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp
+3-8llvm/test/Transforms/LoopIdiom/memset-runtime-32bit.ll
+222-1127 files not shown
+236-13613 files

LLVM/project 3b1c40emlir/lib/Target/LLVMIR ModuleImport.cpp, mlir/test/Target/LLVMIR/Import function-metadata.ll

[MLIR][LLVM] Preserve unknown function metadata on import

Import representable non-debug function metadata without a kind-specific
dialect conversion into `LLVMFuncOp` `function_metadata`. Preserve repeated
metadata kinds through the generic carrier so LLVM IR import and export can
round-trip the supported generic metadata subset.

Warn and drop attachments outside that subset while continuing to import the
function.
DeltaFile
+124-0mlir/test/Target/LLVMIR/Import/function-metadata.ll
+32-5mlir/lib/Target/LLVMIR/ModuleImport.cpp
+156-52 files

LLVM/project 2f07067clang/lib/CodeGen/TargetBuiltins RISCV.cpp, cross-project-tests/intrinsic-header-tests riscv_packed_simd.c

[RISCV] Support Packed Multiply High Accumulate (#217591)

This patch adds the packed multiply high accumulate intrinsics and
corresponding codegen. See also
https://github.com/riscv/riscv-p-spec/blob/master/P-ext-intrinsics.adoc#packed-multiply-high-accumulate.
DeltaFile
+181-0llvm/test/CodeGen/RISCV/rvp-simd-64.ll
+120-0cross-project-tests/intrinsic-header-tests/riscv_packed_simd.c
+80-0llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+55-0llvm/test/CodeGen/RISCV/rvp-simd-32.ll
+49-0clang/lib/CodeGen/TargetBuiltins/RISCV.cpp
+40-0llvm/lib/Target/RISCV/RISCVInstrInfoP.td
+525-03 files not shown
+591-09 files

LLVM/project 538df38clang/include/clang/Sema Sema.h, clang/lib/Sema SemaLambda.cpp SemaDecl.cpp

[Clang][RISCV] Mangle the ABI tag of a standard calling convention variant (#217249)

The psABI says a function using a standard calling convention variant
has to append an extra ABI tag to its mangled name, following the "ABI
tags" rule of the Itanium C++ ABI. The only variant listed so far is the
fixed-length vector calling convention, whose tag is
riscv_vls_cc_<ABI_VLEN>:

`__attribute__((riscv_vls_cc(128))) void foo();`

now mangles as `_Z3fooB16riscv_vls_cc_128v`.

The tag comes from the calling convention of the function type, so it
also covers a convention picked up from a typedef. It is emitted like an
explicit abi_tag attribute: sorted and deduplicated together with the
explicit tags, and never dropped as a derived tag.

Note the example in the psABI writes the tag length as B12, which does
not match the 16 characters of "riscv_vls_cc_128".

    [4 lines not shown]
DeltaFile
+40-40clang/test/CodeGen/RISCV/riscv-vector-callingconv-llvm-ir.cpp
+64-0clang/test/CodeGenCXX/riscv-mangle-vls-cc.cpp
+49-0clang/lib/Sema/SemaDecl.cpp
+4-0clang/include/clang/Sema/Sema.h
+3-0clang/lib/Sema/SemaLambda.cpp
+160-405 files

LLVM/project 3babe29llvm/lib/Target/RISCV RISCVCodeGenPrepare.cpp

[RISCV][NFC] Rename RISCVCodeGenPrepare Impl Class (#217819)
DeltaFile
+13-12llvm/lib/Target/RISCV/RISCVCodeGenPrepare.cpp
+13-121 files

LLVM/project 98cf3b0llvm/lib/Target/RISCV RISCVTargetMachine.cpp RISCVCodeGenPassBuilder.cpp, llvm/test/CodeGen/RISCV O3-newpm-pipeline.ll prefer-w-inst.mir

[RISCV] Port Opt W Instrs to NewPM (#215673)

Assisted-by: AI
DeltaFile
+44-22llvm/lib/Target/RISCV/RISCVOptWInstrs.cpp
+8-2llvm/lib/Target/RISCV/RISCV.h
+2-3llvm/lib/Target/RISCV/RISCVCodeGenPassBuilder.cpp
+2-2llvm/lib/Target/RISCV/RISCVTargetMachine.cpp
+4-0llvm/test/CodeGen/RISCV/prefer-w-inst.mir
+2-1llvm/test/CodeGen/RISCV/O3-newpm-pipeline.ll
+62-306 files not shown
+69-3112 files

LLVM/project bc3d073clang/lib/CodeGen TargetInfo.cpp TargetInfo.h, clang/lib/CodeGen/TargetBuiltins NVPTX.cpp

[clang][NVPTX] Emit !atomic.ignore.denormal.mode for CUDA atomics

CUDA's atomicAdd() family is defined in terms of PTX atom.add, whose
denormal behavior is fixed by the hardware. Without any annotation the
backend has to assume the function's denormal mode must be honored and
expands these into CAS loops whenever the two disagree. Mark them with
!atomic.ignore.denormal.mode so the native instruction is used.

That covers the __nvvm_atom_*_add_gen_f builtins that atomicAdd(),
atomicAdd_block() and atomicAdd_system() are written in terms of, plus
C11/C++11 atomics under -fatomic-ignore-denormal-mode and the
[[clang::atomic(ignore_denormal_mode)]] attribute, which requires
teaching the NVPTX target about AtomicOptions.

The condition for when the metadata is meaningful is now shared with the
AMDGPU and SPIR-V targets in addAtomicIgnoreDenormalModeMetadata(). It
takes an AllowHalf flag because whether f16 denormals are observable is
target specific: PTX exposes no FTZ control for f16 operations, so
atom.add.f16 never flushes and the opt-in is meaningful there, whereas

    [3 lines not shown]
DeltaFile
+321-0clang/test/CodeGenCUDA/atomic-ignore-denormal-mode-nvptx.cu
+19-4clang/lib/CodeGen/TargetBuiltins/NVPTX.cpp
+18-0clang/lib/CodeGen/TargetInfo.h
+15-0clang/lib/CodeGen/TargetInfo.cpp
+12-0clang/lib/CodeGen/Targets/NVPTX.cpp
+2-4clang/lib/CodeGen/Targets/SPIR.cpp
+387-85 files not shown
+402-1711 files

LLVM/project 4fad0ffllvm/lib/Target/NVPTX NVPTXISelLowering.cpp, llvm/test/CodeGen/NVPTX atomicrmw-ignore-denormal-mode.ll

[NVPTX] Honor !atomic.ignore.denormal.mode on atomicrmw fadd

PTX atom.add has a fixed denormal behavior that the program cannot
control: atom.add.f32 flushes denormals on global memory but not on
shared, and atom.add.f16 never flushes. When that disagrees with the
function's denormal mode, the backend expands the atomic into a CAS loop
so the denormal behavior is preserved.

!atomic.ignore.denormal.mode says the denormal behavior of this
particular atomic does not matter, so use the native instruction even
when it disagrees. This is the same thing -nvptx-allow-ftz-atomics does,
except per-instruction instead of per-compilation, which lets a frontend
opt in only the operations it knows about -- notably CUDA's atomicAdd(),
which is defined in terms of atom.add.

Note that -nvptx-allow-ftz-atomics defaults to true, so the new behavior
is only observable with -nvptx-allow-ftz-atomics=false.

Co-authored-by: Artem Belevich <tra at google.com>
DeltaFile
+258-0llvm/test/CodeGen/NVPTX/atomicrmw-ignore-denormal-mode.ll
+11-3llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
+269-32 files

LLVM/project 46834b4mlir/include/mlir/Dialect/LLVMIR LLVMOpBase.td LLVMOps.td, mlir/lib/Dialect/LLVMIR/IR LLVMDialect.cpp

[mlir][LLVM] Add ignore_denormal_mode UnitAttr to LLVM::AtomicRMWOp
DeltaFile
+22-5mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
+8-7mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
+8-0mlir/test/Dialect/LLVMIR/invalid.mlir
+7-0mlir/include/mlir/Dialect/LLVMIR/LLVMOpBase.td
+4-0mlir/test/Target/LLVMIR/Import/instructions.ll
+4-0mlir/test/Dialect/LLVMIR/roundtrip.mlir
+53-121 files not shown
+55-127 files

LLVM/project 38abe38llvm/test/Transforms/AtomicExpand/AMDGPU expand-atomic-v2f16-agent.ll expand-atomic-f64-system.ll

[IR] Generalize !amdgpu.ignore.denormal.mode into !atomic.ignore.denormal.mode

The !amdgpu.ignore.denormal.mode metadata tells the backend that an
atomicrmw fadd need not honor the function's denormal mode, so a native
atomic instruction whose denormal behavior is fixed in hardware may be
used instead of a CAS loop. Nothing about that is AMDGPU specific: NVPTX
has exactly the same problem with atom.add, whose FTZ behavior depends on
the address space and cannot be controlled.

Promote it to a target independent fixed metadata kind,
!atomic.ignore.denormal.mode, and switch the AMDGPU, SPIR-V and OpenMP
producers and consumers over to it. Document it in LangRef, and point
AMDGPUUsage at that description rather than duplicating it.

Existing IR keeps working: AutoUpgrade renames the metadata on atomicrmw
instructions when parsing textual IR and when materializing bitcode. The
upgrade is deliberately scoped to atomicrmw rather than being applied to
every attachment of that name, since that is the only place the metadata
was ever meaningful. Because bitcode can be materialized one function at

    [6 lines not shown]
DeltaFile
+84-84llvm/test/Transforms/AtomicExpand/AMDGPU/expand-atomic-f32-agent.ll
+78-78llvm/test/Transforms/AtomicExpand/AMDGPU/expand-atomic-f32-system.ll
+44-44llvm/test/Transforms/AtomicExpand/AMDGPU/expand-atomic-f64-agent.ll
+43-43llvm/test/Transforms/AtomicExpand/AMDGPU/expand-atomic-rmw-fadd.ll
+41-41llvm/test/Transforms/AtomicExpand/AMDGPU/expand-atomic-f64-system.ll
+34-34llvm/test/Transforms/AtomicExpand/AMDGPU/expand-atomic-v2f16-agent.ll
+324-32467 files not shown
+868-64873 files

LLVM/project af38d15. .mailmap

[mailmap] Add my entry (#217827)
DeltaFile
+1-0.mailmap
+1-01 files

LLVM/project 2f24757clang/include/clang/AST Expr.h, clang/lib/AST/ByteCode Interp.cpp State.cpp

[clang][ExprConst] Post-merge review for relaxed evaluation (#217675)

Rename a function to be more descriptive and add documentation.
DeltaFile
+8-0clang/include/clang/AST/Expr.h
+3-2clang/lib/AST/ByteCode/State.cpp
+4-1clang/lib/AST/ByteCode/State.h
+1-1clang/lib/AST/ByteCode/Interp.cpp
+16-44 files

LLVM/project 3aa2a68flang/lib/Evaluate fold-integer.cpp fold-implementation.h, flang/lib/Semantics expression.cpp

Conversion to KindsEnum
DeltaFile
+123-120flang/unittests/Evaluate/IntegerValueTest.cpp
+124-114flang/unittests/Evaluate/RealValueTest.cpp
+94-89flang/lib/Evaluate/fold-implementation.h
+90-72flang/lib/Semantics/expression.cpp
+70-65flang/unittests/Evaluate/intrinsics.cpp
+65-57flang/lib/Evaluate/fold-integer.cpp
+566-51795 files not shown
+2,056-1,686101 files

LLVM/project 625f7e5llvm/lib/Target/RISCV RISCVInstrInfo.td, llvm/lib/Target/RISCV/Disassembler RISCVDisassembler.cpp

[RISCV][Disassembler] Symbolize UImm20 and SImm12Lo operands (#217550)

he RISC-V disassembler currently decodes operands represented by
`UImm20OperandMaybeSym` and `Simm12LoOp` directly into immediate
operands. As a result, an installed `MCSymbolizer` has no opportunity to
recover relocation-backed symbolic expressions for these operands.

Enable `MCSymbolizer` handling for RISC-V `UImm20` and `SImm12Lo`
operands. Fall back to the original immediate when symbolization is not
available. `SImm12Lo` values are sign-extended, while `UImm20` values
remain unchanged.

This enables clients such as BOLT to reconstruct symbolic operands for
HI20/LO12, PC-relative, and GOT relocations during instruction decoding.

This change only adds symbolizer hooks for these operands; the actual
symbolization is delegated to the installed `MCSymbolizer`. When no
symbolizer is installed, the existing immediate-based disassembly
behavior is preserved. Test coverage may need to be added after
RISCVMCSymbolizer is implemented in BOLT.
DeltaFile
+46-0llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp
+2-0llvm/lib/Target/RISCV/RISCVInstrInfo.td
+48-02 files

LLVM/project 4b95627llvm/lib/IR RuntimeLibcalls.cpp, llvm/test/Transforms/Util/DeclareRuntimeLibcalls divmod.ll

RuntimeLibcalls: Describe register-returning divmod libcall ABIs

Teach RuntimeLibcallsInfo::getFunctionTy about the ARM AEABI
(__aeabi_*divmod) and Windows (__rt_*div*) divmod sigantures. Currently
the custom lowering to these calls hardcodes the call signature information,
but in the future this should be automatically handled.

Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
DeltaFile
+57-0llvm/lib/IR/RuntimeLibcalls.cpp
+26-0llvm/test/Transforms/Util/DeclareRuntimeLibcalls/divmod.ll
+83-02 files

LLVM/project 9687b66clang/lib/CodeGen CodeGenFunction.h CGExpr.cpp, clang/test/CodeGen attr-sized-by-for-pointers.c attr-counted-by-or-null-for-pointers.c

[CodeGen] Fix -fsanitize=array-bounds for __sized_by / _or_null pointers

`EmitCountedByBoundsChecking()` assumed a CountAttributedType is always
a __counted_by pointer. That isn't true, there are four versions of the
attribute:

* `__counted_by`: Already handled correctly.
* `__counted_by_or_null`: Incorectly handled.
* `__sized_by`: Incorreclty handled.
* `__sized_by_or_null`: Incorreclty handled.

In particular:

* __sized_by / __sized_by_or_null: the loaded bound is a byte count, but the
  element index was compared against it directly, so an access was only
  flagged once the index exceeded the byte count -- missing out-of-bounds
  accesses for a pointee larger than one byte. Scale the index to bytes
  ('index * sizeof(element)') before comparing. counted_by counts elements
  and is unchanged; a void (or otherwise zero-sized) pointee uses the GNU

    [15 lines not shown]
DeltaFile
+396-173clang/test/CodeGen/attr-sized-by-or-null-for-pointers.c
+295-98clang/test/CodeGen/attr-counted-by-or-null-for-pointers.c
+291-81clang/test/CodeGen/attr-sized-by-for-pointers.c
+43-9clang/lib/CodeGen/CGExpr.cpp
+2-1clang/lib/CodeGen/CodeGenFunction.h
+1,027-3625 files

LLVM/project 54a930fclang/lib/CodeGen CGBuiltin.cpp, clang/test/CodeGen attr-counted-by-for-pointers.c attr-sized-by-for-pointers.c

[CodeGen] Fix __builtin_dynamic_object_size for __sized_by / _or_null pointers (#213794)

`emitCountedByPointerSize()` assumed a CountAttributedType is always
a __counted_by pointer. That isn't true, there are four versions of the
attribute:

* `__counted_by`: Already handled correctly.
* `__counted_by_or_null`: Incorectly handled.
* `__sized_by`: Incorreclty handled.
* `__sized_by_or_null`: Incorreclty handled.

In particular:

* __sized_by / __sized_by_or_null: the attribute argument is a byte count, but
the object size was computed as count * sizeof(*ptr), over-reporting by the
element size for any pointee larger than one byte. Use the count directly for
the byte-counting variants.

* __counted_by_or_null / __sized_by_or_null: a null pointer describes no

    [20 lines not shown]
DeltaFile
+655-0clang/test/CodeGen/attr-sized-by-or-null-for-pointers.c
+514-0clang/test/CodeGen/attr-counted-by-or-null-for-pointers.c
+401-2clang/test/CodeGen/attr-sized-by-for-pointers.c
+169-5clang/test/CodeGen/attr-counted-by-for-pointers.c
+98-43clang/lib/CodeGen/CGBuiltin.cpp
+1,837-505 files

LLVM/project fb7a341llvm/lib/Target/AMDGPU VOP3Instructions.td

[AMDGPU] Update the comment regarding opsel[0] for v_cvt_sr_fp8/bf8_f16, NFC (#217796)

To be consistent with the actual implementation, OPSEL[0] can be
non-zero to select high 16-bit of src0.
DeltaFile
+2-1llvm/lib/Target/AMDGPU/VOP3Instructions.td
+2-11 files

LLVM/project d2c4cedllvm/lib/Transforms/Vectorize LoopVectorizationPlanner.h VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize/RISCV tail-folding-complex-mask.ll

[VPlan] Append recipes created via builder to worklist

The previous PR appended the top most created recipe to the worklist, and this PR extends it to any other nested recipes that were created, similar to InstCombine.

This removes the header mask in a good few more places on RISC-V as measured on SPEC CPU 2017, e.g. for the following loop:

```c
long f(const int *p, const int *q, long n) {
  long a = 0, b = 0;
  for (long i = 0;; i++) {
    if (p[i] && q[i]) { a += i; b += i; }
    if (i + 1 == n) break;
  }
  return a + b;
}
```

Before:


    [49 lines not shown]
DeltaFile
+24-7llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+11-4llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h
+5-7llvm/test/Transforms/LoopVectorize/RISCV/tail-folding-complex-mask.ll
+40-183 files

LLVM/project 3769d38llvm/test/Transforms/LoopVectorize/RISCV tail-folding-complex-mask.ll

Precommit test
DeltaFile
+163-0llvm/test/Transforms/LoopVectorize/RISCV/tail-folding-complex-mask.ll
+163-01 files

LLVM/project 5b7cd73llvm/test/Transforms/LoopVectorize blend-i1.ll

Precommit test
DeltaFile
+58-0llvm/test/Transforms/LoopVectorize/blend-i1.ll
+58-01 files

LLVM/project 09a2a83llvm/lib/Transforms/Vectorize VPlanTransforms.cpp

[VPlan] Make simplifyRecipe more like InstCombine

Most combines in simplifyRecipe RAUW a value, but not all of them erase the old recipe.
Unify them and bring it in line with InstCombine by having it return a VPValue, which simplifyRecipes can then call RAUW with, and automatically erase the old recipe.

Similarly to InstCombine, combines that modify a recipe should return the same recipe.
DeltaFile
+1-0llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+1-01 files

LLVM/project dc8bf36llvm/lib/Transforms/Vectorize VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize blend-i1.ll dont-fold-tail-for-divisible-TC.ll

[VPlan] Process simplifyRecipes in a worklist

This brings simplifyRecipes further in line with InstCombine, and asides from unlocking more simplifications it also helps avoid spurious test churn whenever passes are moved around simplifyRecipes.

For now just push the new recipe onto the worklist, not its users.
This uses a post order traversal so we maintain the same simplification order as before.

I've gone through and checked every simplification we do is a canonicalisation that converges, and I checked on llvm-test-suite + SPEC CPU 2017 in various configurations that we don't hit any cycles.
DeltaFile
+23-14llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+4-8llvm/test/Transforms/LoopVectorize/dont-fold-tail-for-divisible-TC.ll
+2-3llvm/test/Transforms/LoopVectorize/blend-i1.ll
+29-253 files

LLVM/project ff040a9llvm/lib/Transforms/Vectorize VPlanTransforms.cpp

Update trunc combine, fix m_Not return position
DeltaFile
+4-4llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+4-41 files

LLVM/project e4ff683llvm/lib/Transforms/Vectorize VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize/VPlan constant-fold.ll

[VPlan] Make simplifyRecipe more like InstCombine

Most combines in simplifyRecipe RAUW a value, but not all of them erase the old recipe.
Unify them and bring it in line with InstCombine by having it return a VPValue, which simplifyRecipes can then call RAUW with, and automatically erase the old recipe.

Similarly to InstCombine, combines that modify a recipe should return the same recipe.
DeltaFile
+116-153llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+6-9llvm/test/Transforms/LoopVectorize/X86/funclet.ll
+0-11llvm/test/Transforms/LoopVectorize/VPlan/constant-fold.ll
+122-1733 files

LLVM/project 9632bb8llvm/test/Transforms/LoopVectorize/X86 funclet.ll

[LV] Add back constant-folded operand bundle libcall test. NFC (#217255)
DeltaFile
+59-0llvm/test/Transforms/LoopVectorize/X86/funclet.ll
+59-01 files

LLVM/project 85666a5clang-tools-extra/docs/clang-tidy/checks/altera single-work-item-barrier.md struct-pack-align.md, clang-tools-extra/docs/clang-tidy/checks/boost use-ranges.md

[clang-tidy][docs] Rewrite check docs in six modules to Markdown
DeltaFile
+187-188clang-tools-extra/docs/clang-tidy/checks/cert/err33-c.md
+155-155clang-tools-extra/docs/clang-tidy/checks/boost/use-ranges.md
+71-73clang-tools-extra/docs/clang-tidy/checks/altera/unroll-loops.md
+38-39clang-tools-extra/docs/clang-tidy/checks/altera/struct-pack-align.md
+34-36clang-tools-extra/docs/clang-tidy/checks/altera/single-work-item-barrier.md
+31-33clang-tools-extra/docs/clang-tidy/checks/concurrency/mt-unsafe.md
+516-5244 files not shown
+621-63310 files

LLVM/project 3a21307clang/lib/CIR/Lowering/DirectToLLVM LowerToLLVM.cpp, clang/test/CIR/CodeGen vector-bool.cpp

[CIR] Support Vector of bool ty in VecCmpOp (#216400)

Support the Vector of bool in VecCmpOp
DeltaFile
+81-0clang/test/CIR/CodeGen/vector-bool.cpp
+9-2clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+90-22 files