LLVM/project cc6d78ellvm/lib/Transforms/Vectorize VPlanTransforms.cpp VPlanPatternMatch.h, llvm/test/Transforms/LoopVectorize uniform_across_vf_induction1.ll uniform_across_vf_induction2.ll

[VPlan] Fold shifts by zero. (#223276)

Add trivial folds of shifts by zero. This allows us to match IR SCEV
behavior (which looks through trivial shifts), w/o explicitly handling
those in getSCEVExprForVPValue.
DeltaFile
+86-112llvm/test/Transforms/LoopVectorize/uniform_across_vf_induction1_lshr.ll
+12-36llvm/test/Transforms/LoopVectorize/uniform_across_vf_induction2.ll
+10-16llvm/test/Transforms/LoopVectorize/uniform_across_vf_induction1.ll
+3-3llvm/test/Transforms/LoopVectorize/VPlan/vplan-scev-address-idioms.ll
+6-0llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+6-0llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h
+123-1673 files not shown
+126-1739 files

LLVM/project e33c1e8llvm/test/Transforms/LoopVectorize narrow-to-per-lane-replicates.ll

[VPlan] Add tests for narrowing users of a widened induction (NFC). (#223277)

Add additional narrowing tests for wide IV including pointer inductions
and FP inductions.
DeltaFile
+446-0llvm/test/Transforms/LoopVectorize/narrow-to-per-lane-replicates.ll
+446-01 files

LLVM/project e476e76bolt/lib/Target/AArch64 AArch64MCPlusBuilder.cpp, llvm/lib/Target/AArch64 AArch64ISelLowering.cpp AArch64ExpandImm.h

[AArch64] Make ImmInsnModel operands optional. NFC (#223280)

This helps make sure we do not use them incorrectly, and should allow
them to
be checked for values in the future.
DeltaFile
+18-17llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
+8-8bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp
+4-4llvm/lib/Target/AArch64/AArch64ExpandImm.cpp
+2-2llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+2-2llvm/lib/Target/AArch64/AArch64ExpandImm.h
+34-335 files

LLVM/project 4b08871clang/test/Analysis/Scalable/source-edit-generation multi-tu-edits-merge.cpp multi-tu-conflict-edits-merge.cpp

[SSAF][SourceEdit] Wire in 'clang-ssaf-src-edit-merge' and add multi-TU tests (#220372)

With 'clang-ssaf-src-edit-merge', we can test source edits over multiple
translation units: their Replacements are merged before apply. This
covers both clean merges and conflicts.
DeltaFile
+288-0clang/test/Analysis/Scalable/source-edit-generation/multi-tu-conflict-edits-merge.cpp
+206-0clang/test/Analysis/Scalable/source-edit-generation/multi-tu-edits-merge.cpp
+494-02 files

LLVM/project 4ef24acclang/lib/ScalableStaticAnalysis/SourceTransformation/Transformations CppBoundedBuffers.cpp, clang/unittests/ScalableStaticAnalysis/SourceTransformation CppBoundedBuffersTest.cpp

[SSAF][SourceTransformation] Add transformation for new[] and malloc

For a PointerFlowPair, if RHS is an array-new or malloc call and LHS
has bounded type, transform RHS to the bounded-producing alternative
to new[]/malloc.

4th step of
rdar://187125348
DeltaFile
+149-0clang/unittests/ScalableStaticAnalysis/SourceTransformation/CppBoundedBuffersTest.cpp
+105-5clang/lib/ScalableStaticAnalysis/SourceTransformation/Transformations/CppBoundedBuffers.cpp
+254-52 files

LLVM/project cf53006lldb/source/Plugins/Process/FreeBSD-Kernel-Core ProcessFreeBSDKernelCore.cpp

[lldb][Process/FreeBSD-Kernel-Core] Dereference stoppcbs based on target kernel version (#222977)

As of `__FreeBSD_version 1400089` stoppcbs is a pointer to the pcbs
array. Dereference stoppcbs on sufficiently new kernels.

Obtained-from:
https://cgit.freebsd.org/src/commit/?id=0f2bb40bc7ddee7ba329d9b344623e2a186b4046
DeltaFile
+14-0lldb/source/Plugins/Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCore.cpp
+14-01 files

LLVM/project 9bf40cellvm/lib/Target/AMDGPU SIISelLowering.h AMDGPULegalizerInfo.cpp, llvm/test/CodeGen/AMDGPU llvm.amdgcn.s.buffer.load.illegal-types.ll llvm.amdgcn.ptr.s.buffer.load.illegal-types.ll

[AMDGPU] Fix s_buffer_load crash for illegal result types (#215483)

i1, i4, v2i1, v3i16, v6i8, and i128 had no SBUFFER_LOAD selection
pattern and crashed

Load a legal i32/vNi32 carrier instead and narrow/bitcast down to the
requested type
DeltaFile
+101-0llvm/test/CodeGen/AMDGPU/llvm.amdgcn.s.buffer.load.illegal-types.ll
+101-0llvm/test/CodeGen/AMDGPU/llvm.amdgcn.ptr.s.buffer.load.illegal-types.ll
+38-46llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+15-1llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
+6-0llvm/lib/Target/AMDGPU/SIISelLowering.h
+261-475 files

LLVM/project 82a18cfclang/lib/Driver/ToolChains MinGW.cpp, clang/test/Driver mingw.cpp

[Clang][MinGW] Link default-manifest.o if exists (#223084)

Some MinGW distributions provide a pre-compiled manifest xml to disable
the UAC escalation dialog.
Link automatically the manifest only if it exists when linking an
executable.
Do the same as Cygwin (#220875) and align with GCC.
DeltaFile
+10-0clang/test/Driver/mingw.cpp
+5-0clang/lib/Driver/ToolChains/MinGW.cpp
+0-0clang/test/Driver/Inputs/mingw_msys2_tree/msys64/mingw32/lib/default-manifest.o
+15-03 files

LLVM/project 89c4368llvm/lib/Transforms/Vectorize LoopVectorizationPlanner.h VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize trunc-extended-icmps.ll

[VPlan] Don't create no-op casts in truncateToMinimalBitwidths. (#223271)

No-op casts get folded to the input operand, which caused applyFlags to
crash if that was not a cast. Fix by avoiding creating such trivial
casts in the first place.
DeltaFile
+48-0llvm/test/Transforms/LoopVectorize/trunc-extended-icmps.ll
+6-12llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+2-0llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h
+56-123 files

LLVM/project 8497b7allvm/lib/Target/AMDGPU SIISelLowering.h BUFInstructions.td, llvm/test/CodeGen/AMDGPU llvm.amdgcn.struct.ptr.buffer.format.i8.xfail.ll llvm.amdgcn.struct.ptr.buffer.load.format.d16.tfe.ll

[AMDGPU] Support TFE D16 format buffer loads on gfx8/10/11/12 (#211465)

gfx90a has no hardware encoding for TFE D16 format buffer loads, so
reject the combination there with a diagnostic. Other targets
(gfx8/10/11/12) do have real encodings, so add codegen support for them
instead of rejecting unconditionally.
DeltaFile
+763-0llvm/test/CodeGen/AMDGPU/llvm.amdgcn.struct.ptr.buffer.load.format.d16.tfe.ll
+78-24llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
+61-23llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+26-0llvm/test/CodeGen/AMDGPU/llvm.amdgcn.struct.ptr.buffer.format.i8.xfail.ll
+14-0llvm/lib/Target/AMDGPU/BUFInstructions.td
+2-2llvm/lib/Target/AMDGPU/SIISelLowering.h
+944-496 files not shown
+955-5012 files

LLVM/project ac8aca0llvm/lib/CodeGen/GlobalISel GISelValueTracking.cpp, llvm/test/CodeGen/AArch64/GlobalISel knownbits-insert-subvector.mir

[GlobalISel] Add KnownBits support for G_INSERT_SUBVECTOR (#215048)

## Summary

Add KnownBits support for `G_INSERT_SUBVECTOR` in GlobalISel value
tracking.

The implementation splits the demanded elements between the original
vector and inserted subvector, ignores overwritten source elements, and
intersects the KnownBits information from the contributing operands.

Part of #150515.

## Testing

- `llvm-lit
llvm/test/CodeGen/AArch64/GlobalISel/knownbits-insert-subvector.mir`
- `llvm-lit llvm/test/CodeGen/AArch64/GlobalISel/knownbits-*.mir`
  - 40/40 passed
DeltaFile
+105-0llvm/test/CodeGen/AArch64/GlobalISel/knownbits-insert-subvector.mir
+37-0llvm/lib/CodeGen/GlobalISel/GISelValueTracking.cpp
+36-0llvm/unittests/CodeGen/GlobalISel/KnownBitsVectorTest.cpp
+178-03 files

LLVM/project a129f83llvm/utils/TableGen AsmMatcherEmitter.cpp

[TableGen] Use BitVector for RegisterSet in AsmMatcherEmitter (NFC) (#222525)

This patch replaces std::set with BitVector for RegisterSet in
AsmMatcherEmitter.

Without this patch, RegisterSet is represented as
std::set<const Record *, LessRecordByID>.  On targets with large
register files like AMDGPU (~3,000 registers), repeatedly computing set
intersections and subset checks using std::set nodes incurs
significant overhead.

This patch assigns each register record a dense bit index ordered by
LessRecordByID.  This allows us to represent RegisterSet as a
BitVector, enabling fast bitwise operations for set intersections and
subset checks.

This reduces the wall-clock time of generating AMDGPUGenAsmMatcher.inc
from 39.53s to 31.32s (a 20.8% speedup) across 3 runs while producing
bit-for-bit identical output across all targets.

Assisted-by: Antigravity
DeltaFile
+60-32llvm/utils/TableGen/AsmMatcherEmitter.cpp
+60-321 files

LLVM/project da57c79clang/lib/StaticAnalyzer/Core CallEvent.cpp

[analyzer][NFC] Determine object parameter constness for getExtraInvalidatedValues
DeltaFile
+11-1clang/lib/StaticAnalyzer/Core/CallEvent.cpp
+11-11 files

LLVM/project eb5c148llvm/lib/CodeGen MachineScheduler.cpp, llvm/test/CodeGen/AArch64 cluster-frame-index.mir

[MachineScheduler] Order fixed-FI memory operations by object offset (#219669)

## Summary

- sort fixed frame-index memory operands by their explicit stack offsets
- preserve the existing frame-index ordering for ordinary stack objects
and as a tie-breaker
- add an AArch64 MIR regression with fixed objects created out of offset
order

## Background

`BaseMemOpClusterMutation` currently orders frame-index bases by
frame-index number, adjusted for the stack growth direction. Fixed frame
objects are different from ordinary stack objects: they carry explicit
offsets, and their creation order is not required to match address
order.

As a result, a target clustering hook can receive two fixed objects in

    [22 lines not shown]
DeltaFile
+49-0llvm/test/CodeGen/AArch64/cluster-frame-index.mir
+19-0llvm/lib/CodeGen/MachineScheduler.cpp
+68-02 files

LLVM/project 8d2fef4

Merge branch 'users/ziqingluo/PR-187125348-3' of github.com:llvm/llvm-project into users/ziqingluo/PR-187125348-3

 Conflicts:
        clang/lib/ScalableStaticAnalysis/Analyses/PointerFlow/PointerFlowExtractor.cpp
        clang/lib/ScalableStaticAnalysis/SourceTransformation/Transformations/CppBoundedBuffers.cpp
DeltaFile
+0-00 files

LLVM/project 9a7259dclang/lib/ScalableStaticAnalysis/SourceTransformation CMakeLists.txt, clang/lib/ScalableStaticAnalysis/SourceTransformation/Transformations CppBoundedBuffers.cpp

[SSAF][clang-reforge] Retrofit expressions after CppBoundedBuffers decl rewrites

PR #210457 introduces declaration rewriting.  When CppBoundedBuffers
rewrites a declaration or return type to a bounded_ptr/bounded_array,
some of the existing uses of that entity needs retrofit.

This commit creates expression rewrites for the following patterns:

- Append '.data()' to call arguments when necessary parameter is not
  transformed but argument is transformed.
- Append '.as_bounded<T>()' to call arguments when both parameter and
  argument are transformed but element types are not identical.
- Rewrite '&e[i]' to '(e + i)' and '&*e'/'&(*e)' to 'e', if 'e' is
  transformed.
- Rewrite '(T*)e', 'static_cast<T*>(e)', and 'reinterpret_cast<T*>(e)'
  to 'e.as_bounded<T>()', if 'e' is transformed.

The 3rd step of
rdar://187125348
DeltaFile
+445-5clang/lib/ScalableStaticAnalysis/SourceTransformation/Transformations/CppBoundedBuffers.cpp
+246-1clang/unittests/ScalableStaticAnalysis/SourceTransformation/CppBoundedBuffersTest.cpp
+9-0clang/lib/ScalableStaticAnalysis/SourceTransformation/CMakeLists.txt
+7-0llvm/utils/gn/secondary/clang/lib/ScalableStaticAnalysis/SourceTransformation/BUILD.gn
+707-64 files

LLVM/project efe61a2clang/include/clang/ScalableStaticAnalysis/Analyses/EntityPointerLevel EntityPointerLevel.h, clang/include/clang/ScalableStaticAnalysis/Analyses/PointerFlow PointerFlowPairs.h

[SSAF][PointerFlow] Drop unused TUSummaryExtractor param from translateDeclPointerLevel

TUSummaryExtractor is only needed to mint EntityIds when building an
EntityPointerLevel; translateDeclPointerLevel just walks the Expr and
returns raw DeclPointerLevels, so it never touched Extractor.

This is the second patch the radar below depends on:
rdar://187125348
DeltaFile
+24-20clang/lib/ScalableStaticAnalysis/Analyses/EntityPointerLevel/EntityPointerLevel.cpp
+2-3clang/include/clang/ScalableStaticAnalysis/Analyses/EntityPointerLevel/EntityPointerLevel.h
+2-2clang/lib/ScalableStaticAnalysis/Analyses/PointerFlow/PointerFlowExtractor.cpp
+2-0clang/include/clang/ScalableStaticAnalysis/Analyses/PointerFlow/PointerFlowPairs.h
+30-254 files

LLVM/project 58b7d98clang/lib/ScalableStaticAnalysis/Analyses/PointerFlow PointerFlowExtractor.cpp

fix clang-format
DeltaFile
+1-2clang/lib/ScalableStaticAnalysis/Analyses/PointerFlow/PointerFlowExtractor.cpp
+1-21 files

LLVM/project a73dac5clang/include/clang/ScalableStaticAnalysis/Analyses/PointerFlow PointerFlowPairs.h, clang/lib/ScalableStaticAnalysis/Analyses SSAFAnalysesCommon.h

[SSAF][PointerFlow] Factor out and make the pointer-flow matching reusable

The PointerFlowExtractor matches AST nodes representing pointer-flows
and converts them to entity-based data structures directly. This
commit divides this procedure into two steps: 1) match and represent
AST nodes as PointerFlowPairs; 2) convert PointerFlowPairs to
entity-based edges. Therefore, other SSAF tools may use
PointerFlowPairs.

The refactoring also improves coverage: it separates pointer-type
checking from structural matching, so structural matching alone now
discovers cases that were previously missed due to overly aggressive
type checking (e.g. a record-typed call argument or return value
initialized with a braced-init-list).

Along the way, this also fixes a bug for unnamed bit-fields.

First patch for
rdar://187125348
DeltaFile
+433-0clang/unittests/ScalableStaticAnalysis/Analyses/PointerFlow/PointerFlowPairsTest.cpp
+300-0clang/lib/ScalableStaticAnalysis/Analyses/PointerFlow/PointerFlowPairs.cpp
+67-232clang/lib/ScalableStaticAnalysis/Analyses/PointerFlow/PointerFlowExtractor.cpp
+122-0clang/include/clang/ScalableStaticAnalysis/Analyses/PointerFlow/PointerFlowPairs.h
+7-1clang/lib/ScalableStaticAnalysis/Analyses/SSAFAnalysesCommon.h
+1-0llvm/utils/gn/secondary/clang/unittests/ScalableStaticAnalysis/BUILD.gn
+930-2333 files not shown
+933-2339 files

LLVM/project 0485ad7clang/lib/CodeGen CodeGenModule.cpp, clang/test/CodeGen thread-model.c

clang: Emit the "thread-model" module flag (#223156)
DeltaFile
+11-0clang/test/CodeGen/thread-model.c
+9-0clang/lib/CodeGen/CodeGenModule.cpp
+20-02 files

LLVM/project 667efaellvm/lib/Transforms/InstCombine InstCombineCompares.cpp, llvm/test/Transforms/InstCombine icmp-rotate.ll

[InstCombine] Fix fold of comparison of rotates (#223263)

rotate(X, AmtX) == rotate(Y, AmtY) -> rotate(X, AmtX - AmtY) == Y

This fold is usually valid, but implicitly assumed that the bit width
was a power of two. This is now checked and the transform doesn't fire
if the bit width isn't a power of two.

Fixes https://github.com/llvm/llvm-project/issues/223262
DeltaFile
+12-6llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
+14-0llvm/test/Transforms/InstCombine/icmp-rotate.ll
+26-62 files

LLVM/project 86858declang/test/Headers __clang_hip_math.hip, llvm/lib/Analysis ValueTracking.cpp

[ValueTracking] Propagate non-negativity through fptosi (#217868)

Fixes #217442

`fptosi` is poison when the rounded value does not fit in the result
type, so `computeKnownBits` can assume the conversion rounds towards
zero without wrapping. Negative subnormals and negative zero always
round to 0, so only sources known to never be a negative normal or
negative infinity (i.e. values <= -1.0) can produce a negative result.

This lets InstCombine fold `(int)fabs(x) < 0` to `false`, matching GCC,
and also benefits other magnitude-clamping intrinsics such as sqrt.
DeltaFile
+704-704clang/test/Headers/__clang_hip_math.hip
+65-0llvm/test/Transforms/InstCombine/fabs.ll
+21-0llvm/unittests/Analysis/ValueTrackingTest.cpp
+13-1llvm/lib/Analysis/ValueTracking.cpp
+14-0llvm/test/Transforms/InstCombine/sitofp.ll
+3-3llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-pow.ll
+820-7081 files not shown
+825-7087 files

LLVM/project 8e23b6dllvm/lib/Target/AMDGPU GCNCreateVOPD.cpp GCNVOPDUtils.cpp

[NFC][AMDGPU] Fix clang-tidy warnings in VOPD related files (#223261)
DeltaFile
+7-7llvm/lib/Target/AMDGPU/GCNVOPDUtils.cpp
+5-3llvm/lib/Target/AMDGPU/GCNCreateVOPD.cpp
+12-102 files

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

[VPlan] Generalize folding IV increment into phi start value (NFC). (#223260)

simplifyRecipe folds

  X    = phi(0, IVInc)
  IVInc = X + Step
  Def   = IVInc + Y

into a phi starting at Y, but only if Y is a live-in. Also allow values
defined in the block the phi's start value is coming from, which is
where the value conservatively has to be available.

NFC today, but preparation for modeling the full epilogue skeleton in
VPlan.
DeltaFile
+20-13llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+20-131 files

LLVM/project d44791dllvm/lib/Target/AMDGPU SIInstructions.td SIISelLowering.cpp, llvm/test/CodeGen/AMDGPU llvm.amdgcn.sched.barrier.ll

[AMDGPU] IGLP: Sanitize user schedule hints (#221256)

Fixes the following ICE:
```cpp
extern __shared__ int lds[];

__global__
void kern_ice() {
    auto _ = lds[threadIdx.x];
    __builtin_amdgcn_sched_barrier(~0x380); // Allow all except DS instructions
}
```

See: https://godbolt.org/z/oGfT1TTa4
DeltaFile
+0-22llvm/lib/Target/AMDGPU/AMDGPUIGroupLP.cpp
+22-0llvm/lib/Target/AMDGPU/AMDGPUIGroupLP.h
+6-0llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+2-0llvm/test/CodeGen/AMDGPU/llvm.amdgcn.sched.barrier.ll
+2-0llvm/lib/Target/AMDGPU/SIInstructions.td
+32-225 files

LLVM/project 914e15cllvm/include/llvm/IR DebugInfoMetadata.h Metadata.h, llvm/lib/IR DebugInfoMetadata.cpp Metadata.cpp

[IR] Move the LLVMContext out of ReplaceableMetadataImpl. NFC (#222085)

No ReplaceableMetadataImpl method reads its LLVMContext reference, and
ValueAsMetadata reaches the context through the wrapped Value. Keep the
reference in a derived ReplaceableUsesWithContext, used by the two
owners with no other route to it: MDNode's on-demand RAUW support and
DIArgList.

Rename the base to ReplaceableUses: it is the use map behind RAUW for
the metadata kinds that support it, not a pimpl, and the name matches
ContextAndReplaceableUses and getReplaceableUses().

Make the base destructor protected, since getOrCreate() hands out
ReplaceableUses pointers that must never be deleted. Delete copy
assignment explicitly; the LLVMContext reference suppresses it
implicitly.

sizeof(ValueAsMetadata) 152 -> 144.
Aided by Opus 5
DeltaFile
+42-32llvm/include/llvm/IR/Metadata.h
+15-16llvm/lib/IR/Metadata.cpp
+4-4llvm/include/llvm/IR/DebugInfoMetadata.h
+4-3llvm/unittests/IR/MetadataTest.cpp
+1-1llvm/lib/Transforms/IPO/GlobalOpt.cpp
+1-1llvm/lib/IR/DebugInfoMetadata.cpp
+67-571 files not shown
+68-587 files

LLVM/project b7877e0llvm/lib/Transforms/Scalar ConstraintElimination.cpp, llvm/test/Transforms/ConstraintElimination induction-relational-predicate-latch.ll

[ConstraintElim] Derive an unsigned IV bound from a signed relational latch. (#222762)

For a known non-negative backedge (either via isKnownNonNegative or
because the increment is increasing), 0 <=s PN <= B holds and implies
that B is non-negative as well.

Use that to translate a signed condition to the equivalent unsigned one.

Note that the general signed->unsigned rewrite cannot catch this,
because the precondition also needs rewriting to unsigned.

No llvm-opt-benchmark-nightly impact, but it can help remove runtime
checks generated by sanitizers or Swift code. An end-to-end C example is
https://clang.godbolt.org/z/vbd91MjaM.

Alive2 Proof:  https://alive2.llvm.org/ce/z/G3Mv7t

PR: https://github.com/llvm/llvm-project/pull/222762
DeltaFile
+243-0llvm/test/Transforms/ConstraintElimination/induction-relational-predicate-latch.ll
+15-0llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+258-02 files

LLVM/project 4098f56mlir/lib/Dialect/Vector/IR VectorOps.cpp, mlir/test/Dialect/Vector canonicalize.mlir

[mlir][vector] Don't fold in_bounds for negative constant indices (#219681)

`isInBounds` checked only that the transfer *ends* inside the source:

    return cstOp.value() + vectorSize <= sourceSize;

The `in_bounds` attribute promises more than that. Its definition in
VectorOps.td says accesses "(including the starting point)" may run
out-of-bounds when it is "false", so setting it to "true" is a claim
about the start of the transfer as well as its end.

With a negative constant index the two disagree. For

    vector.transfer_read %m[-1] : memref<8xf32>, vector<4xf32>

`-1 + 4 <= 8` holds, so the fold set `in_bounds = [true]`, even though
element -1 is read from outside `%m`.

The same expression also overflows for a large enough index: at `index =

    [13 lines not shown]
DeltaFile
+39-0mlir/test/Dialect/Vector/canonicalize.mlir
+9-1mlir/lib/Dialect/Vector/IR/VectorOps.cpp
+48-12 files

LLVM/project 053b3dbllvm/lib/Target/AMDGPU GCNCreateVOPD.cpp GCNVOPDUtils.cpp

[NFC][AMDGPU] Fix clang-tidy warnings in VOPD related files
DeltaFile
+7-7llvm/lib/Target/AMDGPU/GCNVOPDUtils.cpp
+5-3llvm/lib/Target/AMDGPU/GCNCreateVOPD.cpp
+12-102 files

LLVM/project 85f694bllvm/lib/Transforms/Instrumentation AddressSanitizer.cpp, llvm/test/Instrumentation/AddressSanitizer asan-detect-invalid-pointer-pair.ll

[ASan] Convert pointer-pair operands based on type (#218494)

`CreatePointerCast` was being called on everything without checking what
it actually is, so if the operand came from ptrtoint ... to i32 it just
crashes (its not a pointer).

now it check the type first - pointers get pointer-cast, ints get
zext/trunc'd to intptr width.

Fixes #217544

also edited regression tests for this
DeltaFile
+27-0llvm/test/Instrumentation/AddressSanitizer/asan-detect-invalid-pointer-pair.ll
+13-1llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
+40-12 files