LLVM/project 58fb370 — clang/include/clang/Sema Sema.h, lld/ELF Config.h Driver.cpp

[ADT] Adopt SmallVectorWithFlags in padding-saving records

Pack boolean and small-bitfield state into SmallVectorWithFlags across
464 records in LLVM, Clang, MLIR, Flang, LLD, LLDB, BOLT, Polly, and
clang-tools-extra. Preserve inline capacities, initial flag values,
payload-only comparisons, and existing copy and move behavior. Remove
redundant state where doing so provides the same layout improvement.

Add ordinary-vector construction and payload move assignment support.
Use ArrayRef for read-only vector interfaces and explicit payload transfers
where existing mutable SmallVectorImpl interfaces need ordinary vectors.
Add regression tests for flag retention during vector growth, copy, move,
serialization, and calling-convention lowering.

Leave ELFObjectFile lazy caches separate from immutable flags to preserve
independent const access. Leave generated AffineVectorizeOptions unchanged
because its public aggregate contract needs a separate generator change.

Validation: Clang unit tests, check-lld, 21 selected unit-test binaries,

    [4 lines not shown]
DeltaFile
+201-203lld/ELF/Driver.cpp
+275-110lld/ELF/Config.h
+152-91llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+170-61clang/include/clang/Sema/Sema.h
+126-76llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
+117-72llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.h
+1,041-613855 files not shown
+12,981-8,709861 files

LLVM/project 06b9534 — llvm/test/CodeGen/AArch64 fsh.ll vec-combine-compare-to-bitmask.ll, llvm/test/CodeGen/AArch64/GlobalISel combine-simplify-demanded-bits-trunc-xor-select.mir

feat(gisel): mirror trunc/xor/select demanded bits

Mirror SelectionDAG demand propagation, known-bits folding, truncation
of logical shifts, and XOR narrowing and constant simplifications.
Respect shared producers, legality and target profitability, including
AArch64 XOR/shift commuting. Preserve integer LLTs when narrowing.
DeltaFile
+1,327-1,103llvm/test/CodeGen/AArch64/neon-dotreduce.ll
+526-520llvm/test/CodeGen/AArch64/overflow-vec.ll
+388-390llvm/test/CodeGen/AMDGPU/GlobalISel/fshl.ll
+744-0llvm/test/CodeGen/AArch64/GlobalISel/combine-simplify-demanded-bits-trunc-xor-select.mir
+201-222llvm/test/CodeGen/AArch64/vec-combine-compare-to-bitmask.ll
+159-172llvm/test/CodeGen/AArch64/fsh.ll
+3,345-2,40740 files not shown
+4,140-3,03346 files

LLVM/project cef45d4 — llvm/test/CodeGen/AMDGPU freeze.ll, llvm/test/CodeGen/AMDGPU/GlobalISel postlegalizercombiner-ubfx.mir combine-shl-from-extend-narrow.postlegal.mir

test(amdgpu): use extended LLTs in MIR tests
DeltaFile
+186-186llvm/test/CodeGen/AMDGPU/GlobalISel/combine-shl-from-extend-narrow.postlegal.mir
+65-65llvm/test/CodeGen/AMDGPU/GlobalISel/postlegalizercombiner-ubfx.mir
+4-4llvm/test/CodeGen/AMDGPU/freeze.ll
+255-2553 files

LLVM/project 409d920 — llvm/test/CodeGen/AMDGPU freeze.ll integer-mad-patterns.ll, llvm/test/CodeGen/AMDGPU/GlobalISel extractelement.ll insertelement.i8.ll

feat(gisel): simplify demanded bits through shifts

Propagate demanded bits through constant shifts and convert ASHR to
LSHR when sign fill is unobserved or the source is nonnegative.
Enable the combiner for AMDGPU with focused MIR coverage.
DeltaFile
+224-265llvm/test/CodeGen/AMDGPU/integer-mad-patterns.ll
+164-237llvm/test/CodeGen/AMDGPU/GlobalISel/saddsat.ll
+157-230llvm/test/CodeGen/AMDGPU/GlobalISel/ssubsat.ll
+150-214llvm/test/CodeGen/AMDGPU/GlobalISel/insertelement.i8.ll
+161-168llvm/test/CodeGen/AMDGPU/freeze.ll
+0-328llvm/test/CodeGen/AMDGPU/GlobalISel/extractelement.ll
+856-1,44270 files not shown
+2,557-3,43876 files

LLVM/project 89afbf8 — llvm/lib/CodeGen ProcessImplicitDefs.cpp

ProcessImplicitDefs: Fix erasing instruction before debug printing it
DeltaFile
+1-1llvm/lib/CodeGen/ProcessImplicitDefs.cpp
+1-11 files

LLVM/project dfa8a1b — llvm/include/llvm/CodeGen MachineBasicBlock.h, llvm/lib/CodeGen MachineBasicBlock.cpp ProcessImplicitDefs.cpp

ProcessImplicitDefs: Mark kept physreg IMPLICIT_DEFs dead (#232821)

An IMPLICIT_DEF is erased by setting undef an all uses of the def in a 
block. If there are uses outside of the block, it is kept. In the case of 
physical registers, this was left as an unused def without a  dead flag. 
Look at the liveins of the successors to check if it's live, and add the
dead flag if not. We probably should just erase the instruction, but I've
left that for a future change.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+110-0llvm/test/CodeGen/X86/process-implicit-defs-physreg-dead.mir
+82-0llvm/test/CodeGen/AMDGPU/process-implicit-defs-set-dead.mir
+13-4llvm/lib/CodeGen/ProcessImplicitDefs.cpp
+16-0llvm/lib/CodeGen/MachineBasicBlock.cpp
+5-0llvm/include/llvm/CodeGen/MachineBasicBlock.h
+226-45 files

LLVM/project a43db54 — mlir/lib/Conversion/MathToFuncs MathToFuncs.cpp, mlir/lib/Dialect/Math/Transforms AlgebraicSimplification.cpp

[mlir][math] Avoid integer division by zero when lowering math.ipowi (#230271)

`math.ipowi` with a zero base and a negative exponent is lowered to an
integer division by zero in two places: `MathToFuncs` emits a literal `1
/ 0` for that case, and `PowIStrengthReduction` rewrites a constant
negative exponent into `1 / (b * b * ...)` for a base that may be zero.
`arith.divsi` by zero is undefined behavior, so the result depends on
the target and the optimizer: on AArch64, `0 ** -1` lowered through
`MathToFuncs` returns 0 under `mlir-runner --O0` and 1 under `--O3`.

This patch:

- deletes the `b == 0` branch from the `MathToFuncs` helper, so a zero
base with a negative exponent returns 0 through the same final return as
every `|b| > 1` base;
- stops `PowIStrengthReduction` from reducing `ipowi` on `IntegerType`
with a negative exponent, leaving it to `MathToFuncs`;
- makes `PowIStrengthReduction` bail out for an `INT64_MIN` exponent,
since negating it is signed overflow (this changes `fpowi`,

    [22 lines not shown]
DeltaFile
+88-62mlir/test/Conversion/MathToFuncs/ipowi.mlir
+63-18mlir/test/Dialect/Math/algebraic-simplification.mlir
+74-0mlir/test/Integration/Dialect/Math/CPU/mathtofuncs_ipowi.mlir
+3-19mlir/lib/Conversion/MathToFuncs/MathToFuncs.cpp
+15-0mlir/lib/Dialect/Math/Transforms/AlgebraicSimplification.cpp
+10-0mlir/test/Dialect/Complex/powi-simplify.mlir
+253-996 files

LLVM/project 0f80d3e — llvm/lib/Bitcode/Writer BitcodeWriter.cpp, llvm/test/Bitcode thinlto-function-summary-callgraph-pgo.ll

[Bitcode] Avoid emitting trailing zeros for non-GlobalValue IDs in writeGUIDList (#233554)

ModuleBitcodeWriterBase::writeGUIDList previously sized the GUIDs vector
to VE.getValues().size(), which includes not only M.global_values()
(assigned the lowest ValueIDs by ValueEnumerator) but also all constants
and ConstantAsMetadata enumerated in the module (such as global
initializers, profile metadata, and debug info constants).

Because only GlobalValues can have GUIDs, and both BitcodeReader and
IndexBitcodeReader already bound lookups by GUIDList.size() and ignore
zero entries, sizing GUIDs to VE.getValues().size() emitted a 64-bit
zero for every constant in the module.

Instead, resize GUIDs dynamically up to the highest ValueID among
M.global_values() with a non-zero assigned GUID. On two large ThinLTO
applications, this reduced the total size of the minimized thin link
bitcode files by 8.6% (1.14 GiB) and 14.7% (0.79 GiB), with an
equivalent reduction in thin link peak RSS.


    [5 lines not shown]
DeltaFile
+6-9llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
+1-1llvm/test/Bitcode/thinlto-function-summary-callgraph-pgo.ll
+7-102 files

LLVM/project 59da49c — llvm/test/Transforms/Util/DeclareRuntimeLibcalls systemz.ll sparc.ll

RuntimeLibcalls: Add signatures for atomic libcalls

Define type signatures in tablegen for the various atomic
library functions.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+1,060-1,060llvm/test/Transforms/Util/DeclareRuntimeLibcalls/aarch64.ll
+336-336llvm/test/Transforms/Util/DeclareRuntimeLibcalls/windows.ll
+336-336llvm/test/Transforms/Util/DeclareRuntimeLibcalls/ppc.ll
+336-336llvm/test/Transforms/Util/DeclareRuntimeLibcalls/bsd.ll
+224-224llvm/test/Transforms/Util/DeclareRuntimeLibcalls/systemz.ll
+224-224llvm/test/Transforms/Util/DeclareRuntimeLibcalls/sparc.ll
+2,516-2,51612 files not shown
+4,047-3,99818 files

LLVM/project 64f50ff — llvm/lib/Transforms/IPO GlobalOpt.cpp, llvm/test/Transforms/GlobalOpt dbg-intrinsic-loopanalysis.ll

[GlobalOpt] [NFC] Skip cold call analysis when no function can use coldcc (#227944)

OptimizeFunctions() starts by calling hasOnlyColdCalls() on every
function in the module to find functions whose callers are all cold.
That analysis needs BlockFrequencyInfo for each caller and can be
expensive on large modules.

The result is only used to switch functions to the cold calling
convention, which happens only if TargetTransformInfo::
useColdCCForColdCall() returns true for the function (or if
-enable-coldcc-stress-test is set). On targets where that hook never
returns true, the analysis is wasted work.

Add a cheap pre-scan that asks TTI whether any non-intrinsic function in
the module can use coldcc, and only run the hasOnlyColdCalls() loop if
one can, or if the stress-test flag is set. The pre-scan stops at the
first match.

This is a compile-time improvement only; there is no change in output.

    [5 lines not shown]
DeltaFile
+14-9llvm/lib/Transforms/IPO/GlobalOpt.cpp
+3-2llvm/test/Transforms/GlobalOpt/dbg-intrinsic-loopanalysis.ll
+17-112 files

LLVM/project d8ade6d — mlir/lib/Target/LLVM/XeVM Target.cpp, mlir/test lit.cfg.py

[MLIR][XeVM] Set the required sub-group size on every kernel (#232844)

When serializing a gpu.module to SPIR-V, the XeVM target sets
intel_reqd_sub_group_size = 16 on the first kernel only: the walk stops
after the first kernel it finds. The other kernels of the module get no
required size, so the GPU compiler may pick a different sub-group size
for them, for example 32. Code that the XeGPU and XeVM lowering emits
assumes 16 lanes, so those kernels can compute wrong results.

Set the required sub-group size on every kernel of the module.

---------

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+25-0mlir/test/Dialect/GPU/module-to-binary-xevm.mlir
+1-5mlir/lib/Target/LLVM/XeVM/Target.cpp
+3-0mlir/test/lit.cfg.py
+29-53 files

LLVM/project 54831f6 — llvm/lib/CodeGen ProcessImplicitDefs.cpp

ProcessImplicitDefs: Fix erasing instruction before debug printing it
DeltaFile
+1-1llvm/lib/CodeGen/ProcessImplicitDefs.cpp
+1-11 files

LLVM/project 41e7826 — flang/lib/Semantics openmp-utils.cpp, flang/test/Lower/OpenMP metadirective-user.f90

[flang][OpenMP] Don't treat different runtime conditions as subsets

When two METADIRECTIVE candidates have the same score and one selector is
a strict subset of the other, the superset wins. Flang ranks every
runtime condition with the same property, so isStrictSubset saw
different conditions as the same:

  !$omp metadirective &
  !$omp& when(user={condition(a)}, &
  !$omp&      implementation={vendor(score(4): llvm)}: taskyield) &
  !$omp& when(user={condition(b)}, device={kind(host)}, &
  !$omp&      implementation={vendor(score(3): llvm)}: taskwait)

Both candidates score 5, and `b` was tested first, so TASKWAIT ran when
both conditions were true. Neither selector is a subset of the other, so
clause order should decide.

This patch adds a UserCondition key to VariantMatchInfo, and
isStrictSubset requires equal keys when the first selector has a

    [14 lines not shown]
DeltaFile
+224-0flang/test/Lower/OpenMP/metadirective-user.f90
+42-3flang/lib/Semantics/openmp-utils.cpp
+37-0llvm/unittests/Frontend/OpenMPContextTest.cpp
+7-0llvm/lib/Frontend/OpenMP/OMPContext.cpp
+4-0llvm/include/llvm/Frontend/OpenMP/OMPContext.h
+314-35 files

LLVM/project e115177 — llvm/lib/CodeGen ProcessImplicitDefs.cpp

Add TODO
DeltaFile
+2-0llvm/lib/CodeGen/ProcessImplicitDefs.cpp
+2-01 files

LLVM/project d868984 — lldb/source/Plugins/Process/Utility RegisterInfos_arm.h RegisterInfos_arm64.h, lldb/source/Register/Arch RegisterInfos_arm.h RegisterInfos_arm64.h

[lldb] Move register support out of ProcessUtility (#232969)

Create lldbRegister under lldb/Register and move register classes that
do not call OS-specific interface directly.
DeltaFile
+0-4,730lldb/source/Plugins/Process/Utility/lldb-riscv-register-enums.h
+4,730-0lldb/source/Register/Arch/lldb-riscv-register-enums.h
+0-818lldb/source/Plugins/Process/Utility/RegisterInfos_arm64.h
+818-0lldb/source/Register/Arch/RegisterInfos_arm64.h
+0-813lldb/source/Plugins/Process/Utility/RegisterInfos_arm.h
+813-0lldb/source/Register/Arch/RegisterInfos_arm.h
+6,361-6,361243 files not shown
+20,074-20,074249 files

LLVM/project 1c7fee3 — llvm/test/CodeGen/X86 veclib-llvm.pow.ll, llvm/test/Transforms/Util/DeclareRuntimeLibcalls sleef-riscv.ll libmvec.ll

RuntimeLibcalls: Add the remaining vector libraries (#232770)

Add definitions for Accelerate, Darwin_libsystem_m, LIBMVEC, MASSV and
SVML, and fill out SLEEFGNUABI, ArmPL and AMDLIBM to match VecFuncs.def.
The struct-returning ArmPL modf and sincos variants need new _STRET
libcalls.

With the new implementations available, type-split vector math calls
can now be expanded, and the vectorizer keeps pow as an intrinsic for
codegen to lower to the library call.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+421-0llvm/test/CodeGen/X86/veclib-llvm.pow.ll
+328-5llvm/test/Transforms/Util/DeclareRuntimeLibcalls/armpl.ll
+313-2llvm/test/Transforms/Util/DeclareRuntimeLibcalls/sleef.ll
+260-0llvm/test/Transforms/Util/DeclareRuntimeLibcalls/amdlibm.ll
+206-0llvm/test/Transforms/Util/DeclareRuntimeLibcalls/libmvec.ll
+177-0llvm/test/Transforms/Util/DeclareRuntimeLibcalls/sleef-riscv.ll
+1,705-711 files not shown
+2,146-4817 files

LLVM/project 4e60de5 — lldb/source/Plugins/SymbolFile/DWARF DWARFASTParserFortran.cpp, lldb/unittests/SymbolFile/DWARF DWARFASTParserFortranTests.cpp

[lldb][Fortran] Addressed feedback, including early exits throughout ParseTypeFromDWARF and not treating DW_ATE_unsigned as a sentinel value
DeltaFile
+86-77lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserFortran.cpp
+4-4lldb/unittests/SymbolFile/DWARF/DWARFASTParserFortranTests.cpp
+90-812 files

LLVM/project 1dd270c — lldb/source/Plugins/SymbolFile/DWARF DWARFASTParserFortran.h DWARFASTParserFortran.cpp, lldb/source/Plugins/TypeSystem/Fortran TypeSystemFortran.h TypeSystemFortran.cpp

[lldb][Fortran] Added support for base types to DWARFASTParserFortran, tests for DWARFASTParserFortran and a method to get the parser from TypeSystemFortran
DeltaFile
+209-0lldb/unittests/SymbolFile/DWARF/DWARFASTParserFortranTests.cpp
+127-4lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserFortran.cpp
+17-1lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserFortran.h
+8-0lldb/source/Plugins/TypeSystem/Fortran/TypeSystemFortran.cpp
+3-0lldb/source/Plugins/TypeSystem/Fortran/TypeSystemFortran.h
+2-0lldb/unittests/SymbolFile/DWARF/CMakeLists.txt
+366-56 files

LLVM/project 8ada804 — lldb/source/Plugins/SymbolFile/DWARF DWARFASTParserFortran.cpp

[lldb][Fortran] Changed encoding sentinel value to 0x00, removed redundant comment and changed formatting on type name checks
DeltaFile
+5-5lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserFortran.cpp
+5-51 files

LLVM/project 8233dca — lldb/source/Plugins/SymbolFile/DWARF DWARFASTParserFortran.cpp, lldb/unittests/SymbolFile/DWARF DWARFASTParserFortranTests.cpp

[lldb][Fortran] Moved break in case and fixed failing test
DeltaFile
+7-3lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserFortran.cpp
+4-4lldb/unittests/SymbolFile/DWARF/DWARFASTParserFortranTests.cpp
+11-72 files

LLVM/project 7672c6a — lldb/source/Plugins/SymbolFile/DWARF DWARFASTParserFortran.cpp

[lldb][Fortran] Removed space between if-else, changed sentinel value comment and used divideCeil for bit to byte conversion
DeltaFile
+5-5lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserFortran.cpp
+5-51 files

LLVM/project 86eed21 — lldb/source/Plugins/TypeSystem/Fortran TypeSystemFortran.cpp

Apply suggestion from tarunprabhu

Co-authored-by: Tarun Prabhu <tarun at lanl.gov>
DeltaFile
+1-0lldb/source/Plugins/TypeSystem/Fortran/TypeSystemFortran.cpp
+1-01 files

LLVM/project 727e6c7 — lldb/source/Plugins/TypeSystem/Fortran TypeSystemFortran.cpp

Apply suggestion from @tarunprabhu

Co-authored-by: Tarun Prabhu <tarun at lanl.gov>
DeltaFile
+0-1lldb/source/Plugins/TypeSystem/Fortran/TypeSystemFortran.cpp
+0-11 files

LLVM/project 24fded0 — lldb/source/Plugins/TypeSystem/Fortran TypeSystemFortran.h TypeSystemFortran.cpp, lldb/unittests/Symbol TestTypeSystemFortran.cpp

[lldb][Fortran] Added spacing after 1-line ifs, inlined type cases and added default name for all base types
DeltaFile
+33-25lldb/source/Plugins/TypeSystem/Fortran/TypeSystemFortran.cpp
+2-2lldb/source/Plugins/TypeSystem/Fortran/TypeSystemFortran.h
+3-0lldb/unittests/Symbol/TestTypeSystemFortran.cpp
+38-273 files

LLVM/project 911b24a — lldb/source/Plugins/TypeSystem/Fortran FortranTypes.h TypeSystemFortran.cpp, lldb/unittests/Symbol TestTypeSystemFortran.cpp

[lldb][Fortran] Added handling for the unsigned type and included complex types in IsFloatingPointType checks
DeltaFile
+54-1lldb/unittests/Symbol/TestTypeSystemFortran.cpp
+33-5lldb/source/Plugins/TypeSystem/Fortran/TypeSystemFortran.cpp
+1-0lldb/source/Plugins/TypeSystem/Fortran/FortranTypes.h
+88-63 files

LLVM/project 038ee44 — lldb/source/Plugins/TypeSystem/Fortran TypeSystemFortran.cpp

Removed GetTypeName switch default
DeltaFile
+2-1lldb/source/Plugins/TypeSystem/Fortran/TypeSystemFortran.cpp
+2-11 files

LLVM/project 0dcdb5a — lldb/source/Plugins/TypeSystem/Fortran TypeSystemFortran.cpp

Apply suggestion from tarunprabhu

Co-authored-by: Tarun Prabhu <tarun at lanl.gov>
DeltaFile
+0-1lldb/source/Plugins/TypeSystem/Fortran/TypeSystemFortran.cpp
+0-11 files

LLVM/project 22ad128 — lldb/source/Plugins/TypeSystem/Fortran TypeSystemFortran.cpp

Update lldb/source/Plugins/TypeSystem/Fortran/TypeSystemFortran.cpp

Co-authored-by: Tarun Prabhu <tarun at lanl.gov>
DeltaFile
+1-1lldb/source/Plugins/TypeSystem/Fortran/TypeSystemFortran.cpp
+1-11 files

LLVM/project 32f0604 — lldb/source/Plugins/TypeSystem/Fortran FortranTypes.cpp TypeSystemFortran.h, lldb/unittests/Symbol CMakeLists.txt TestTypeSystemFortran.cpp

[lldb][Fortran] Added base type support to TypeSystemFortran and Tests for TypeSystemFortran
DeltaFile
+237-0lldb/unittests/Symbol/TestTypeSystemFortran.cpp
+207-0lldb/source/Plugins/TypeSystem/Fortran/TypeSystemFortran.cpp
+76-0lldb/source/Plugins/TypeSystem/Fortran/FortranTypes.h
+32-35lldb/source/Plugins/TypeSystem/Fortran/TypeSystemFortran.h
+16-0lldb/source/Plugins/TypeSystem/Fortran/FortranTypes.cpp
+2-0lldb/unittests/Symbol/CMakeLists.txt
+570-351 files not shown
+571-357 files

LLVM/project 38c878b — lldb/source/Plugins/TypeSystem/Fortran TypeSystemFortran.cpp

[lldb][Fortran][NFC] Added TODO comment for -fdefault-*-8 above GetBasicTypeFromAST
DeltaFile
+4-0lldb/source/Plugins/TypeSystem/Fortran/TypeSystemFortran.cpp
+4-01 files