LLVM/project 46348fdlibsycl/include/sycl/__impl queue.hpp, libsycl/src/detail context_impl.hpp device_image_wrapper.hpp

[libsycl] Add queue constructors with context. (#221763)

Assisted-by: Claude Code.

---------

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
Co-authored-by: Sergey Semenov <sergey.semenov at intel.com>
DeltaFile
+207-0libsycl/unittests/program_manager/program_cache.cpp
+67-0libsycl/include/sycl/__impl/queue.hpp
+49-16libsycl/src/detail/program_manager.cpp
+46-0libsycl/src/detail/context_impl.cpp
+23-17libsycl/src/detail/device_image_wrapper.hpp
+38-0libsycl/src/detail/context_impl.hpp
+430-3310 files not shown
+519-8816 files

LLVM/project 18ea5b0llvm/test/CodeGen/X86 combine-shl.ll

[X86] combine-shl.ll - regenerate asm comments (#222729)

Reduces diff in upcoming patch
DeltaFile
+14-14llvm/test/CodeGen/X86/combine-shl.ll
+14-141 files

LLVM/project 41c11falibcxx/test/std/utilities/variant/variant.relops three_way.pass.cpp

[libc++][test] Remove non-functional `constexpr` in three-way comparison test for `variant` (#222837)

When we are just testing SFINAE and do not provide definitions for these
comparison operators, or make them deleted, it is unhelpful to mark them
`constexpr`.

If the implementation uses `std::compare_three_way`, which uses deduced
return type in its `operator()`, in the `operator<=>` for `variant`,
more things in the function body would be instantiated and detected. As
a result, the `-Wundefined-inline` warning or something similar could be
raised. Currently, MSVC STL is doing so.
DeltaFile
+6-6libcxx/test/std/utilities/variant/variant.relops/three_way.pass.cpp
+6-61 files

LLVM/project d7f2a9dlldb/source/Plugins/ObjectContainer/Universal-Mach-O ObjectContainerUniversalMachO.cpp, lldb/unittests/ObjectContainer CMakeLists.txt ObjectContainerUniversalMachOTest.cpp

[lldb] Validate universal Mach-O slice bounds before parsing (#221493)

Opening a corrupt universal (fat) Mach-O file can crash lldb. A fat-arch
header entry's (offset, size) pair is untrusted, and `GetObjectFile()`
passes it straight to `ObjectFile::FindPlugin()` with no check against
the
container's own size.

A slice whose offset is 0 points back at the start of the same fat
header,
so `GetObjectFile()` recurses into itself until the stack is exhausted:

```
$ ./ObjectContainerTests --gtest_filter=GetObjectFileSelfReferentialSlice
    #230 ObjectContainerUniversalMachO::GetObjectFile(FileSpec const*) ObjectContainerUniversalMachO.cpp:188
    #231 CreateObjectFromContainer(...) ObjectFile.cpp:43
    #232 lldb_private::ObjectFile::FindPlugin(...) ObjectFile.cpp:146
    #233 ObjectContainerUniversalMachO::GetObjectFile(FileSpec const*) ObjectContainerUniversalMachO.cpp:188
    (repeats until the stack is exhausted)

    [22 lines not shown]
DeltaFile
+97-1lldb/unittests/ObjectContainer/ObjectContainerUniversalMachOTest.cpp
+15-5lldb/source/Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.cpp
+1-0lldb/unittests/ObjectContainer/CMakeLists.txt
+113-63 files

LLVM/project 0046d7fllvm/lib/Transforms/AggressiveInstCombine AggressiveInstCombine.cpp, llvm/test/Transforms/AggressiveInstCombine negative-lower-table-based-cttz.ll

[AggressiveInstCombine] Require a definitive initializer for table folds (#222826)

tryToRecognizeTableBasedCttzOrLog2 accepted any global that isConstant()
and hasInitializer(), but isConstant() only means the value does not
change at run time -- it does not mean the initializer that is read is
the one that gets linked. An interposable (weak/linkonce) constant, or
an externally_initialized constant, can be replaced with a different
constant table at link or load time, so folding tbl[i] against the
observed initializer is unsound for those.

Assisted-by: Claude Code
DeltaFile
+17-0llvm/test/Transforms/AggressiveInstCombine/negative-lower-table-based-cttz.ll
+2-1llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp
+19-12 files

LLVM/project cff0d63llvm/lib/Target/AMDGPU AMDGPUISelLowering.h AMDGPUISelLowering.cpp

[AMDGPU][NFC] Refactor integer to float lowering

Factor common code out of LowerUINT_TO_FP and LowerSINT_TO_FP.
DeltaFile
+15-37llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
+1-0llvm/lib/Target/AMDGPU/AMDGPUISelLowering.h
+16-372 files

LLVM/project f089da7llvm/lib/Target/AMDGPU AMDGPUISelLowering.h AMDGPUISelLowering.cpp, llvm/test/CodeGen/AMDGPU cvt_f32_ubyte.ll

[AMDGPU] Optimize i64 uitofp for unsigned byte values

Use v_cvt_f32_ubyte0 when the i64 source is known to fit in an unsigned
byte.
For example:

  uitofp (and i64 %x, 255) to float

This avoids the generic i64 to f32 expansion.
DeltaFile
+305-0llvm/test/CodeGen/AMDGPU/cvt_f32_ubyte.ll
+18-0llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
+1-0llvm/lib/Target/AMDGPU/AMDGPUISelLowering.h
+324-03 files

LLVM/project 3aeaa59libcxx/include/__atomic to_gcc_order.h

[libc++][NFC] Simplify __to_gcc_order by avoiding constexprness (#220940)

We never make use of the fact that these functions are `constexpr`, so
we might as well avoid complicating them for it. Even if we need them to
be `constexpr` at some point, we likely won't require them to be
`constexpr` in C++11, which is the only language mode with the single
statement restriction that caused this to be more complicated.
DeltaFile
+33-22libcxx/include/__atomic/to_gcc_order.h
+33-221 files

LLVM/project f276d8fllvm/lib/Frontend/OpenMP OMPIRBuilder.cpp, mlir/test/Target/LLVMIR openmp-task-depend-loc.mlir

[OMPIRBuilder] Don't leak a foreign debug loc into the taskwait call (#222586)

A kmp_depend_info array is hoisted to the entry block of the enclosing
function. Pointing the builder into that block also adopts the location
of what is already there, which belongs to whichever construct put it
there rather than to the construct being emitted. restoreIP does not put
the location back either, since it adopts the location of the
instruction it lands on, so in createTaskwait the leak outlives the
excursion and reaches the __kmpc_omp_taskwait_deps_51 call.

Use InsertPointGuard, which restores the location along with the
insertion point.

Fixes https://github.com/llvm/llvm-project/issues/222044

Co-authored-by: Cursor <cursoragent at cursor.com>
DeltaFile
+37-0mlir/test/Target/LLVMIR/openmp-task-depend-loc.mlir
+15-14llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+52-142 files

LLVM/project c45192clibcxx/include __config, libcxx/include/__locale_dir ctype_base.h locale_base_api.h

[libc++] Make _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE part of the locale base API (#219196)

Whether libc++ has to provide a rune table is really part of the
localization of a platform. Move it there instead of `<__config>`.
DeltaFile
+6-0libcxx/include/__locale_dir/support/linux.h
+0-5libcxx/include/__config
+2-1libcxx/include/__locale_dir/ctype_base.h
+3-0libcxx/include/__locale_dir/locale_base_api.h
+1-1libcxx/src/locale.cpp
+2-0libcxx/include/__locale_dir/support/windows.h
+14-76 files not shown
+26-712 files

LLVM/project c8655a8lldb/unittests/Utility RegisterValueTest.cpp

[lldb][test] Fix RegisterValueTest.cpp compile with GCC (#222889)

Avoid some most vexing parse problems.

Fixes #220707 / 19eb8bf1a5fd01e2bca2c7112b7f393f946d67f4.
DeltaFile
+8-5lldb/unittests/Utility/RegisterValueTest.cpp
+8-51 files

LLVM/project e3ba4c8llvm/include/llvm/CodeGen FunctionLoweringInfo.h, llvm/lib/CodeGen/SelectionDAG StatepointLowering.cpp

DAG: Materialize a directly-lowered gc.relocate in its own block

Fixes machine verifier errors with -early-live-intervals.

A NoRelocate statepoint value is a directly-lowered leaf value. When its
gc.relocate is in another block, it was made available by exporting it from the
statepoint's block. For an invoke this defines the vreg after the call, which
does not dominate the use reached along the unwind edge, giving an invalid live
range (or a silent read of an undefined register without -verify-machineinstrs).

Since the leaf has no chain or operands, rematerialize it at the gc.relocate
instead of exporting it. undef already rematerializes there. A gc.relocate
value is always a pointer, so only the integer-constant and frame-index leaves
are handled.

Co-authored-by: Claude (Claude-Opus-4.8)
DeltaFile
+89-0llvm/test/CodeGen/X86/statepoint-relocate-eh.ll
+46-6llvm/lib/CodeGen/SelectionDAG/StatepointLowering.cpp
+25-0llvm/include/llvm/CodeGen/FunctionLoweringInfo.h
+160-63 files

LLVM/project 764a4f4bolt/lib/Passes MCF.cpp, bolt/test/AArch64 edge-weight-estimation-fixes.s

[BOLT] Fixed BOLT edge weight estimation in non-LBR mode. (#222538)

Before: When estimating edge weights within `computeEdgeWeights` in
`MCF.cpp`, if the `TotalChildrenCount` is 0, the default edge weight is
`1 / (GraphT::child_end(BB)_ - GraphT::child_begin(BB))` resulting in
integer division and incorrect distribution of estimated edge weights.

After: Correctly estimate edge weights with zero and non-zero values of
`TotalChildrenCount` by enforcing floating point division.

---------

Co-authored-by: Thrrreeee <shijinrui at bytedance.com>
DeltaFile
+61-0bolt/test/AArch64/edge-weight-estimation-fixes.s
+1-1bolt/lib/Passes/MCF.cpp
+62-12 files

LLVM/project 884f70eorc-rt/include/orc-rt-c/support Error.h WrapperFunction.h

[orc-rt] Fix C++ comments in C header. NFC. (#222887)
DeltaFile
+4-2orc-rt/include/orc-rt-c/support/WrapperFunction.h
+1-1orc-rt/include/orc-rt-c/support/Error.h
+5-32 files

LLVM/project 5d6c716llvm/test/Transforms/LoopVectorize outer_loop_contiguous.ll vplan-widen-select-instruction.ll, llvm/test/Transforms/LoopVectorize/AArch64 scalable-avoid-scalarization.ll outer_loop_prefer_scalable.ll

[VPlan] Narrow VPWidenGEPRecipe if only its first lane is used. (#221171)

Extend existing narrowing in legalizeAndOptimizeInductions, already
applied to VPReplicateRecipe and VPWidenRecipe, to VPWidenGEPRecipe as
well. This improves cases where an interleaved access's insert position
shares an address calculation with a strided access (see
RISCV/interleaved-load-masked-store.ll), which previously caused the
legacy cost model to classify the address as non-uniform.
DeltaFile
+61-0llvm/test/Transforms/LoopVectorize/RISCV/interleaved-load-masked-store.ll
+7-18llvm/test/Transforms/LoopVectorize/RISCV/strided-accesses.ll
+4-12llvm/test/Transforms/LoopVectorize/vplan-widen-select-instruction.ll
+4-8llvm/test/Transforms/LoopVectorize/outer_loop_contiguous.ll
+1-10llvm/test/Transforms/LoopVectorize/AArch64/scalable-avoid-scalarization.ll
+2-9llvm/test/Transforms/LoopVectorize/AArch64/outer_loop_prefer_scalable.ll
+79-5712 files not shown
+100-11118 files

LLVM/project f214b9allvm/test/CodeGen/AMDGPU amdgcn.bitcast.832bit.ll amdgcn.bitcast.896bit.ll, llvm/test/CodeGen/AMDGPU/GlobalISel fpow.ll

Merge branch 'main' into users/jmmartinez/nfs_headache
DeltaFile
+57,327-55,762llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+6,634-6,608llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+5,576-5,657llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.960bit.ll
+4,486-4,550llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.896bit.ll
+2,884-2,534llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.832bit.ll
+4,053-1,008llvm/test/CodeGen/AMDGPU/GlobalISel/fpow.ll
+80,960-76,1192,163 files not shown
+167,456-119,7162,169 files

LLVM/project dc68250llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/AArch64 operand-chains-max-reg-vf.ll

[SLP] Limit second pass to register VF in vectorizeNonVectorizableInsts. (#222755)

The second tryToVectorizeList pass in vectorizeNonVectorizableInsts
would try all roots for each possible VF between 1 and the number of
entries in the list.

This can cause super-linear compile-time, for example when there are
basic blocks with calls taking a large number of loads as arguments.

For example, running SLPVectorizer on a block with 1024 loads passed to
calls (https://llvm.godbolt.org/z/8M53G6WzW) will take a large amount of
time (timeout on godbolt, locally on Apple M1 it takes ~30s). With the
fix, it only takes 0.01s.

On large IR corpus, I did not see any difference in vectorization
decisions on AArch64.

PR: https://github.com/llvm/llvm-project/pull/222755
DeltaFile
+335-0llvm/test/Transforms/SLPVectorizer/AArch64/operand-chains-max-reg-vf.ll
+6-1llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+341-12 files

LLVM/project 462dbc5llvm/include/llvm InitializePasses.h, llvm/include/llvm/CodeGen Passes.h ResetMachineFunctionPass.h

[CodeGen][NPM] Port ResetMachineFunction to NPM
DeltaFile
+76-63llvm/lib/CodeGen/ResetMachineFunctionPass.cpp
+36-0llvm/include/llvm/CodeGen/ResetMachineFunctionPass.h
+2-1llvm/include/llvm/CodeGen/Passes.h
+1-1llvm/lib/CodeGen/TargetPassConfig.cpp
+1-1llvm/include/llvm/Passes/MachinePassRegistry.def
+1-1llvm/include/llvm/InitializePasses.h
+117-672 files not shown
+119-678 files

LLVM/project d63f522flang/lib/Optimizer/Transforms LoopInvariantCodeMotion.cpp, flang/test/Transforms licm.fir

[flang] Do not hoist fir.field_index out of loops

Lowering a consumer of a !fir.field value inspects its defining operation:
for a record whose layout is known at compile time the field becomes an LLVM
GEP struct index, which must be a constant, and otherwise the `field`
attribute is read off the defining op. A field value therefore may not be a
block argument.

LICM broke that. fir.field_index is Pure and takes no operands, so it is
trivially loop-invariant and was hoisted out of the loop. Lowering emits one
inside each arm of a construct -- for example the CASEs of a SELECT CASE that
each pass a different component of the same derived type as an actual
argument -- so hoisting them left those arms as otherwise-identical blocks
differing only in that operand. Block merging then merged them and threaded
the field through a new block argument, and codegen aborted with "must be a
constant".

Leave producers of a !fir.field where they are. The arms then differ by an
operation rather than by an operand, so they are no longer merge candidates.

    [7 lines not shown]
DeltaFile
+15-0flang/lib/Optimizer/Transforms/LoopInvariantCodeMotion.cpp
+10-2flang/test/Transforms/licm.fir
+25-22 files

LLVM/project eb6fe5allvm/lib/Target/AArch64 AArch64ISelLowering.cpp, llvm/test/CodeGen/AArch64 neon-addsub-long-reassoc.ll

[AArch64] Reassociate adds/subs of extends for [SU](ADD|SUB)L. (#222561)

We do this for expressions that can't use widening add/sub.
DeltaFile
+239-0llvm/test/CodeGen/AArch64/neon-addsub-long-reassoc.ll
+52-0llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+291-02 files

LLVM/project 6e25eaelibc/src/pthread pthread_attr_setschedpolicy.h CMakeLists.txt, libc/test/src/pthread pthread_attr_test.cpp

[libc] Implement pthread_attr_[gs]etschedpolicy (#222682)

This patch implements pthread_attr_setschedpolicy and
pthread_attr_getschedpolicy.

This commit only operates on the pthread_attr_t object. It does not
attempt to install the scheduling policy when creating a new thread. I'm
leaving that for a separate patch as it requires a moderately
complicated startup dance to ensure that the scheduling policy takes
effect before the startup code runs.

The validation of inputs in pthread_attr_setschedpolicy is an
interesting question. Glibc accepts only policies explicitly declared in
POSIX, while other implementations let the user pass anything, and rely
on the kernel to validate the arguments. Interestingly, even glibc does
not validate the arguments in pthread_setschedparam.

For llvm-libc, I chose not to validate the arguments either. This is
*mostly* consistent with POSIX, which says (emphasis mine):

    [11 lines not shown]
DeltaFile
+36-0libc/test/src/pthread/pthread_attr_test.cpp
+31-0libc/src/pthread/pthread_attr_getschedpolicy.cpp
+28-0libc/src/pthread/pthread_attr_setschedpolicy.cpp
+27-0libc/src/pthread/CMakeLists.txt
+27-0libc/src/pthread/pthread_attr_getschedpolicy.h
+26-0libc/src/pthread/pthread_attr_setschedpolicy.h
+175-07 files not shown
+197-013 files

LLVM/project bc9886eflang/lib/Lower OpenACC.cpp PFTBuilder.cpp, flang/test/Lower/OpenACC acc-unstructured.f90

[flang][OpenACC] Don't emit unstructured-loop TODO for wrappable loops (#222260)

`genOpenACCLoopFromDoConstruct` raised an NYI for any unstructured DO
inside `acc kernels`. That check ran before the wrapping in
`genFIR(DoConstruct)`, so a loop whose CFG is self-contained aborted
lowering even though the fall-back path would have wrapped it in an
`scf.execute_region`.

Skip the TODO when `isWrappableConstruct()` accepts the loop. Such a
loop is not attached to a directive; it is only nested inside the
kernels region.

Correspondingly, a DO loop sitting directly in an `acc kernels` body is
no longer wrappable, since it is the loop the directive parallelizes and
hiding its CFG would leave the kernels region with nothing to partition.
DeltaFile
+36-3flang/lib/Lower/PFTBuilder.cpp
+2-25flang/test/Lower/OpenACC/Todo/do-loops-to-acc-loops-todo.f90
+27-0flang/test/Lower/OpenACC/acc-unstructured.f90
+7-1flang/lib/Lower/OpenACC.cpp
+72-294 files

LLVM/project e885b0dclang-tools-extra/docs/clang-tidy/checks/readability non-const-parameter.md redundant-control-flow.md

[clang-tidy][docs] Rewrite readability check docs to Markdown [3/5] (#221534)

Tracking issue: #201242

See the [migration guide] for more information.

[migration guide]:

https://llvm.org/docs/SphinxQuickstartTemplate.html#markdown-migration-guidelines

This is the third part of rewriting check documentations in readability
module from reST to MyST Markdown.

AI Usage: This was prepared with rnk's fork of rst2myst and
GPT5.6-assisted cleanup.
I manually verified that the documentation renders as expected.

Preview site:
https://broken.life/llvm-staging/readability-markdown-port/index.html
DeltaFile
+98-101clang-tools-extra/docs/clang-tidy/checks/readability/qualified-auto.md
+49-50clang-tools-extra/docs/clang-tidy/checks/readability/named-parameter.md
+47-50clang-tools-extra/docs/clang-tidy/checks/readability/operators-representation.md
+34-37clang-tools-extra/docs/clang-tidy/checks/readability/redundant-access-specifiers.md
+34-34clang-tools-extra/docs/clang-tidy/checks/readability/redundant-control-flow.md
+32-34clang-tools-extra/docs/clang-tidy/checks/readability/non-const-parameter.md
+294-3064 files not shown
+380-39810 files

LLVM/project 1821d5dclang-tools-extra/docs/clang-tidy/checks/readability named-parameter.rst named-parameter.md

[clang-tidy][docs] Rename readability check docs to Markdown [3/5] (#221533)

Tracking issue: #201242

See the [migration guide] for more information.

[migration guide]:

https://llvm.org/docs/SphinxQuickstartTemplate.html#markdown-migration-guidelines

This is the third part of the mechanical rename of the check
documentations in readability module.
The rewrite is provided by the next PR in this stack.
DeltaFile
+0-141clang-tools-extra/docs/clang-tidy/checks/readability/qualified-auto.rst
+141-0clang-tools-extra/docs/clang-tidy/checks/readability/qualified-auto.md
+0-87clang-tools-extra/docs/clang-tidy/checks/readability/operators-representation.rst
+87-0clang-tools-extra/docs/clang-tidy/checks/readability/operators-representation.md
+0-73clang-tools-extra/docs/clang-tidy/checks/readability/named-parameter.rst
+73-0clang-tools-extra/docs/clang-tidy/checks/readability/named-parameter.md
+301-30114 files not shown
+612-61220 files

LLVM/project 58c46ballvm/lib/Target/AArch64 AArch64ISelLowering.cpp, llvm/test/CodeGen/AArch64 bcmp.ll i128-imm-compare-ccmp.ll

[AArch64] Guard against large types in performOrXorChainCombine (#222146)

Larger type sizes will be legalized to i64, and will hit a crash in
checking constants.

Fixes #222089
DeltaFile
+17-0llvm/test/CodeGen/AArch64/i128-imm-compare-ccmp.ll
+6-8llvm/test/CodeGen/AArch64/bcmp.ll
+2-1llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+25-93 files

LLVM/project b32f85allvm/include/llvm InitializePasses.h, llvm/include/llvm/CodeGen Passes.h ResetMachineFunctionPass.h

[CodeGen][NPM] Port ResetMachineFunction to NPM
DeltaFile
+77-63llvm/lib/CodeGen/ResetMachineFunctionPass.cpp
+36-0llvm/include/llvm/CodeGen/ResetMachineFunctionPass.h
+2-1llvm/include/llvm/CodeGen/Passes.h
+1-1llvm/lib/CodeGen/TargetPassConfig.cpp
+1-1llvm/include/llvm/Passes/MachinePassRegistry.def
+1-1llvm/include/llvm/InitializePasses.h
+118-672 files not shown
+120-678 files

LLVM/project 57c3115clang/include/clang/AST DeclBase.h, clang/lib/AST DeclBase.cpp

Inline cached AST context lookup for declarations

Route declaration context queries through the cached DeclContext path and
define the common path inline. This avoids walking to the translation unit
and removes a hot out-of-line call.

CTMark O0 (3 samples, CPU 6): 29.239400 s -> 28.975433 s (-0.903%).

Impact on significant TUs in MLIR build time:
- `mlir/lib/RegisterAllDialects.cpp`: 2.4845% fewer retired
  instructions.
- `mlir/lib/Dialect/LLVMIR/IR/NVVMDialect.cpp`: 1.4241% fewer retired
  instructions.

Assisted-by: Codex
DeltaFile
+7-0clang/include/clang/AST/DeclBase.h
+0-4clang/lib/AST/DeclBase.cpp
+7-42 files

LLVM/project 6fe5833clang/include/clang/Sema Sema.h, clang/lib/Sema SemaTemplate.cpp

Speed up common template argument checks

Avoid setting up pack and constraint machinery for ordinary unconstrained
template argument lists. Reuse canonical type work, keep common converted
argument lists inline, and skip default-substitution comparisons when the
parameter has no default.

CTMark O0 (3 samples, CPU 6): 29.439800 s -> 29.315900 s (-0.421%).

Impact on significant TUs in MLIR build time:
- `mlir/lib/RegisterAllDialects.cpp`: 0.7009% fewer retired
  instructions.
- `mlir/lib/Dialect/LLVMIR/IR/NVVMDialect.cpp`: 0.6378% fewer retired
  instructions.

Assisted-by: Codex
DeltaFile
+59-23clang/lib/Sema/SemaTemplate.cpp
+3-2clang/include/clang/Sema/Sema.h
+62-252 files

LLVM/project f05ee3cclang/include/clang/Sema AnalysisBasedWarnings.h, clang/lib/Sema AnalysisBasedWarnings.cpp

Cache analysis-warning gates by diagnostic state

Avoid resolving the same disabled warning groups for every function. Reuse one
cached policy for the lifetime, uninitialized-use, fallthrough, recursion,
noexcept, and logical-error analysis gates.

CTMark O0 (3 samples, CPU 6): 29.439800 s -> 29.457833 s (+0.061%).

Impact on significant TUs in MLIR build time:
- `mlir/lib/RegisterAllDialects.cpp`: 1.5439% fewer retired
  instructions.
- `mlir/lib/Dialect/LLVMIR/IR/NVVMDialect.cpp`: 0.7746% fewer retired
  instructions.

Assisted-by: Codex
DeltaFile
+48-16clang/lib/Sema/AnalysisBasedWarnings.cpp
+16-0clang/include/clang/Sema/AnalysisBasedWarnings.h
+64-162 files

LLVM/project d0397a0clang/include/clang/Sema Sema.h, clang/lib/Parse ParseStmt.cpp

Lazily allocate rare expression evaluation state

Keep common expression evaluation records compact by moving diagnostic and
feature-specific collections behind one lazily allocated rare-data object.
Add a no-rare-data pop path to avoid checking empty collections.

CTMark O0 (3 samples, CPU 6): 29.439800 s -> 29.219367 s (-0.749%).

Impact on significant TUs in MLIR build time:
- `mlir/lib/RegisterAllDialects.cpp`: 1.6043% fewer retired
  instructions.
- `mlir/lib/Dialect/LLVMIR/IR/NVVMDialect.cpp`: 0.9162% fewer retired
  instructions.

Assisted-by: Codex
DeltaFile
+90-47clang/lib/Sema/SemaExpr.cpp
+23-32clang/include/clang/Sema/Sema.h
+10-8clang/lib/Sema/SemaExprCXX.cpp
+12-6clang/lib/Sema/SemaChecking.cpp
+10-6clang/lib/Sema/TreeTransform.h
+5-4clang/lib/Parse/ParseStmt.cpp
+150-1033 files not shown
+155-1069 files