LLVM/project 3bbb898clang/lib/DependencyScanning DependencyScannerImpl.cpp

[clang][deps] Ensure the service outlives async module compiles (#181772)

This PR fixes a race condition discovered by thread sanitizer in the
asynchronous dependency scanner implementaion.

The implementation assumed that whenever a new thread is spawned to
compile a module, the primary scanning thread must wait for it to finish
to read the PCM it produces. This is not true - it's possible for the
implicit build on the primary thread to decide to compile the same
module too, leaving the asynchronous thread running without any kind of
synchronization. This means the TU scan may return, the service may get
destroyed, but the asynchronous thread continues running with the VFS
caches and module cache implementation destroyed, leading to crashes.

This PR fixes this by awaiting all asynchronous threads at the end of a
TU scan.
DeltaFile
+55-19clang/lib/DependencyScanning/DependencyScannerImpl.cpp
+55-191 files

LLVM/project dd8ab2allvm/lib/Transforms/Vectorize VPlan.h

[VPlan] Remove VPDerivedIVRecipe and VPScalarIVStepsRecipe from VPHeaderPHIRecipe doc comment. NFC (#181862)

These aren't subclasses of VPHeaderPHIRecipe, I'm not sure if the class
hierarchy changed or not.
Also add the other subclasses to the list.
DeltaFile
+4-5llvm/lib/Transforms/Vectorize/VPlan.h
+4-51 files

LLVM/project 7cbf453llvm/lib/Transforms/Scalar LowerMatrixIntrinsics.cpp, llvm/lib/Transforms/Utils MatrixUtils.cpp

[ProfCheck][Matrix] Add profile data where relevant

This patch tackles two cases:
1. Checks around aliasing/overlapping ranges. This is runtime dependent
   on the pointer values passed in, which we have no way of knowing
   without additional profiling.
2. Loop backedges. For these we also have an associated trip count, so
   we set up the branch weights to represent this.

Tests updated/profcheck-xfail.txt updated.

Reviewers: alanzhao1, fhahn, mtrofin, snehasish

Pull Request: https://github.com/llvm/llvm-project/pull/181292
DeltaFile
+24-20llvm/test/Transforms/LowerMatrixIntrinsics/multiply-fused-loops.ll
+21-13llvm/test/Transforms/LowerMatrixIntrinsics/multiply-fused-volatile.ll
+16-1llvm/lib/Transforms/Utils/MatrixUtils.cpp
+11-6llvm/test/Transforms/LowerMatrixIntrinsics/multiply-fused.ll
+7-4llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp
+6-5llvm/test/Transforms/LowerMatrixIntrinsics/multiply-fused-loops-large-matrixes.ll
+85-491 files not shown
+85-567 files

LLVM/project fc14b1dllvm/include/llvm/Transforms/Utils MatrixUtils.h, llvm/lib/Transforms/Utils MatrixUtils.cpp

[NFC][Matrix] Make CreateLoop take ConstantInt for Bound/Step

These should always be constants (unless someday we add support for
scalable matrices and then we can revisit). Explicitly pass them as
ConstantInt so we can avoid needing to downcast in a future PR that will
calculate appropriate branch weights using these values.

Reviewers: fhahn, mtrofin

Pull Request: https://github.com/llvm/llvm-project/pull/181291
DeltaFile
+4-3llvm/include/llvm/Transforms/Utils/MatrixUtils.h
+3-3llvm/lib/Transforms/Utils/MatrixUtils.cpp
+7-62 files

LLVM/project 293acb5llvm/lib/Transforms/Scalar LowerMatrixIntrinsics.cpp, llvm/test/Transforms/LowerMatrixIntrinsics select.ll

[ProfCheck][Matrix] Propagate profile information for selects

LowerMatrixIntrinsics creates new selects in the process of lowering
matrix intrinsics. The condition of such selects remains the same as
before. Because of this, we can directly propagate the profile
information for all selects on scalar conditions.

Reviewers: mtrofin, snehasish, fhahn, alanzhao1

Pull Request: https://github.com/llvm/llvm-project/pull/181248
DeltaFile
+11-5llvm/test/Transforms/LowerMatrixIntrinsics/select.ll
+13-2llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp
+0-1llvm/utils/profcheck-xfail.txt
+24-83 files

LLVM/project f2446a3clang/test/CodeGen attr-no-outline.c, clang/test/CodeGenObjC attr-no-outline.m

Correct Tests
DeltaFile
+83-36clang/test/CodeGen/attr-no-outline.c
+65-8clang/test/CodeGenObjC/attr-no-outline.m
+148-442 files

LLVM/project 78bc8d6llvm/lib/Transforms/Scalar LowerMatrixIntrinsics.cpp

feedback

Created using spr 1.3.7
DeltaFile
+5-1llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp
+5-11 files

LLVM/project 9a3fbf4llvm/lib/Transforms/Scalar LowerMatrixIntrinsics.cpp

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+5-1llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp
+5-11 files

LLVM/project 8deaa7dllvm/lib/Transforms/Scalar LowerMatrixIntrinsics.cpp

feedback

Created using spr 1.3.7
DeltaFile
+11-2llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp
+11-21 files

LLVM/project 068789dllvm/lib/Transforms/Scalar LowerMatrixIntrinsics.cpp

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+11-2llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp
+11-21 files

LLVM/project 284c647llvm/lib/Transforms/Scalar LowerMatrixIntrinsics.cpp

feedback

Created using spr 1.3.7
DeltaFile
+3-3llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp
+3-31 files

LLVM/project f5aecd3llvm/docs LangRef.rst, llvm/include/llvm/CodeGen TargetLowering.h

[LangRef][ConstantTime] Add documentation for llvm.ct.select.* constant-time intrinsics (#181042)

This PR introduces and documents the llvm.ct.select.* constant-time
intrinsics, providing timing-independent selection operations for
security-sensitive code. The LangRef is updated with syntax, semantics,
supported types, and usage guidance.

Additionally, test coverage is extended with a new <8 x float> variant
(llvm.ct.select.v8f32) and corresponding X86 codegen tests to ensure
correct lowering on both x64 and x32 targets.
DeltaFile
+188-0llvm/test/CodeGen/X86/ctselect.ll
+132-0llvm/docs/LangRef.rst
+5-5llvm/include/llvm/CodeGen/TargetLowering.h
+3-2llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+328-74 files

LLVM/project 3210e20clang/lib/CIR/Dialect/Transforms LoweringPrepare.cpp, clang/test/CIR/CodeGen array.cpp struct.cpp

[CIR] Implement shouldCreateMemCpyFromGlobal in LoweringPrepare (#181276)

CIRGen emits cir.const + cir.store for aggregate initialization, keeping
closer to source-level semantics. LoweringPrepare transforms stores of
constant aggregates (arrays, records) into cir.global + cir.get_global +
cir.copy, matching OG codegen's shouldCreateMemCpyFromGlobal
optimization.

The transform only applies to stores targeting cir.alloca (local
variables inside cir.func). Stores in other contexts (e.g. OpenACC
reduction recipe init blocks, base class initialization) are left as
cir.const + cir.store.

Also fixes CopyOp lowering to use i64 for the memcpy length instead of
i32, matching OG codegen behavior.
DeltaFile
+79-1clang/lib/CIR/Dialect/Transforms/LoweringPrepare.cpp
+27-20clang/test/CIR/CodeGen/array.cpp
+28-19clang/test/CIR/CodeGen/struct.cpp
+17-11clang/test/CIR/CodeGen/pointer-to-member-func.cpp
+12-11clang/test/CIR/CodeGen/no-odr-use.cpp
+11-5clang/test/CIR/Lowering/array.cpp
+174-6715 files not shown
+244-11221 files

LLVM/project 63db233llvm/utils git-llvm-push

[LLVM][Utils] Fix automerge in git-llvm-push (#181766)

Enabling automerge can only be done using the GraphQL API. Add in some
basic GraphQL infrastructure and update the enable_automerge method to
call the GraphQL API to enable automerge for a PR.

Tested locally on #181762.

Closes #181634.
DeltaFile
+28-13llvm/utils/git-llvm-push
+28-131 files

LLVM/project dfacf88llvm/lib/Target/AArch64 AArch64SystemOperands.td, llvm/lib/Target/AArch64/AsmParser AArch64AsmParser.cpp

[AArch64][llvm] Remove `+xs` gating for `tlbip *nxs` instructions

A recent specification update has removed FEAT_XS gating for `tlbip *nxs`
instructions. It remains gated on FEAT_XS for `tlbi *nxs` instructions.
DeltaFile
+6-16llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+8-9llvm/test/MC/AArch64/armv9a-tlbip.s
+0-8llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp
+2-2llvm/test/MC/AArch64/tlbip-tlbid-or-d128.s
+1-2llvm/lib/Target/AArch64/AArch64SystemOperands.td
+17-375 files

LLVM/project 229aed4llvm/lib/Target/AArch64 AArch64SystemOperands.td, llvm/lib/Target/AArch64/AsmParser AArch64AsmParser.cpp

fixup! Make the code simpler following Marian's suggestions
DeltaFile
+15-16llvm/lib/Target/AArch64/AArch64SystemOperands.td
+14-13llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h
+6-11llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+35-403 files

LLVM/project 3b2844cllvm/lib/Target/AArch64 AArch64SystemOperands.td, llvm/lib/Target/AArch64/AsmParser AArch64AsmParser.cpp

[AArch64][llvm] Gate some `tlbip` insns with +tlbid or +d128

Change the gating of `tlbip` instructions containing `*E1IS*`, `*E1OS*`,
`*E2IS*` or `*E2OS*` to be used with `+tlbid` or `+d128`. This is because
the 2025 Armv9.7-A MemSys specification says:

```
  All TLBIP *E1IS*, TLBIP*E1OS*, TLBIP*E2IS* and TLBIP*E2OS* instructions
  that are currently dependent on FEAT_D128 are updated to be dependent
  on FEAT_D128 or FEAT_TLBID
```
DeltaFile
+259-0llvm/test/MC/AArch64/tlbip-tlbid-or-d128.s
+66-66llvm/test/MC/AArch64/armv9a-tlbip.s
+14-7llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+20-0llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h
+11-2llvm/lib/Target/AArch64/AArch64SystemOperands.td
+370-755 files

LLVM/project e48ee1cllvm/test/MC/AArch64 armv9-mrrs.s armv9-msrr.s

fixup! Fix Marian's PR comments
DeltaFile
+0-2llvm/test/MC/AArch64/armv9-mrrs.s
+0-2llvm/test/MC/AArch64/armv9-msrr.s
+0-2llvm/test/MC/AArch64/directive-arch_extension.s
+0-1llvm/test/MC/AArch64/directive-arch_extension-negative.s
+0-74 files

LLVM/project 091296flldb/docs/use/tutorials custom-symbol-resolution.md, lldb/examples/python/templates scripted_symbol_locator.py

[lldb] Revert scripted symbol locator (#181945)

This revert #181334 and its follow-up PRs (including #181488, #181492,
#181493, #181494 and #181498) as well as Ismail's documentation changes
(#181594, #181717). The original commit causes a test failure in CI
(https://github.com/llvm/llvm-project/issues/181938) but the more I look
at the patch, the more I'm convinced it was not ready to land. It will
be easier to iterate on the feedback by re-landing this than by using
post-commit review.
DeltaFile
+0-220lldb/examples/python/templates/scripted_symbol_locator.py
+0-201lldb/source/Plugins/SymbolLocator/Scripted/SymbolLocatorScripted.cpp
+0-193lldb/test/API/functionalities/scripted_symbol_locator/TestScriptedSymbolLocator.py
+0-165lldb/docs/use/tutorials/custom-symbol-resolution.md
+0-130lldb/source/Commands/CommandObjectTarget.cpp
+0-120lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedSymbolLocatorPythonInterface.cpp
+0-1,02943 files not shown
+13-1,81449 files

LLVM/project 3fc48b7llvm/test/MC/RISCV/rvv xsfvcp-invalid.s

[RISCV] Check the error location in xsfvcp-invalid.s. NFC (#181929)

Check that the error location points to the destination operand.

I'm planning to rewrite the code that generates that error, and I want
to make sure I get the location right.
DeltaFile
+10-10llvm/test/MC/RISCV/rvv/xsfvcp-invalid.s
+10-101 files

LLVM/project 54f3b39llvm/utils/TableGen DAGISelMatcherGen.cpp DAGISelMatcherEmitter.cpp

[TableGen] Rename TheMatcher->TheMatcherList. NFC (#181942)

After 8d971c0360f91729cc5120ffd361f7b55e97f2ab, there is a linked list
container object called MatcherList. We no long hold a pointer directly
to the first Matcher in the list.

Rename the variables to make this clearer.
DeltaFile
+10-11llvm/utils/TableGen/DAGISelMatcherGen.cpp
+6-6llvm/utils/TableGen/DAGISelMatcherEmitter.cpp
+3-3llvm/utils/TableGen/DAGISelMatcher.h
+2-2llvm/utils/TableGen/DAGISelEmitter.cpp
+21-224 files

LLVM/project 216f640llvm/lib/LTO LTO.cpp, llvm/tools/gold gold-plugin.cpp

Fix gold plugin support for non-default Triple
DeltaFile
+15-10llvm/tools/gold/gold-plugin.cpp
+9-1llvm/lib/LTO/LTO.cpp
+24-112 files

LLVM/project 30ff575llvm/include/llvm/IR ModuleSummaryIndex.h, llvm/lib/LTO LTO.cpp

[ThinLTO] Distinguish symbols that are promoted
DeltaFile
+27-0llvm/test/ThinLTO/X86/export2.ll
+21-1llvm/include/llvm/IR/ModuleSummaryIndex.h
+9-0llvm/test/ThinLTO/X86/Inputs/export2.ll
+3-2llvm/lib/LTO/LTO.cpp
+1-1llvm/tools/llvm-link/llvm-link.cpp
+1-1llvm/lib/Transforms/IPO/FunctionAttrs.cpp
+62-52 files not shown
+64-78 files

LLVM/project 601c784llvm/lib/Transforms/Vectorize SLPVectorizer.cpp

Fix formatting

Created using spr 1.3.7
DeltaFile
+1-3llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+1-31 files

LLVM/project 0fc9b74clang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/Dialect/IR CIRDialect.cpp

[CIR] Add verifier for CIR try op (#181419)

This adds a verifier to enforce the requirement that every catch handler
in a cir.try operation must begin with a cir.catch_param operation.
DeltaFile
+45-0clang/test/CIR/IR/invalid-try-catch.cir
+32-0clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+8-0clang/test/CIR/IR/try-catch.cir
+1-0clang/include/clang/CIR/Dialect/IR/CIROps.td
+86-04 files

LLVM/project 0300a5bllvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/X86 bool-mask.ll

Address comments

Created using spr 1.3.7
DeltaFile
+8-8llvm/test/Transforms/SLPVectorizer/X86/bool-mask.ll
+11-4llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+19-122 files

LLVM/project 260f6feclang/include/clang/CIR MissingFeatures.h, clang/include/clang/CIR/Dialect/Builder CIRBaseBuilder.h

[CIR][NFC] Upstream support for FP environments and RAII options (#179121)

This adds support for FP environment descriptions and RAII options for
FP operations, i.e.,`CIRGenFPOptionsRAII`).
DeltaFile
+71-0clang/lib/CIR/CodeGen/CIRGenFunction.cpp
+42-0clang/lib/CIR/CodeGen/CIRGenBuilder.h
+15-0clang/lib/CIR/CodeGen/CIRGenFunction.h
+7-0clang/include/clang/CIR/MissingFeatures.h
+1-0clang/include/clang/CIR/Dialect/Builder/CIRBaseBuilder.h
+136-05 files

LLVM/project 027977emlir/include/mlir/Dialect/OpenACC OpenACCCGOps.td, mlir/lib/Dialect/OpenACC/IR OpenACC.cpp

[OpenACC] add acc.reduction_combine operation (#181853)

To facilitate codegen decisions, we need to create an operation that can
abstract the final update of the original and partial sum from a
reduction. This is represented within the combiner recipes. Having an
operator allows future lowering to clearly identify how to handle the
final accumulation. This is currently an NFC.

The format of this operation is:

```
  acc.reduction_combine %srcMemref into %destMemref <reductionOperator> : type
```
DeltaFile
+42-0mlir/include/mlir/Dialect/OpenACC/OpenACCCGOps.td
+17-0mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp
+10-0mlir/test/Dialect/OpenACC/ops.mlir
+69-03 files

LLVM/project d620763llvm/lib/Transforms/Vectorize SLPVectorizer.cpp

Format a comment

Created using spr 1.3.7
DeltaFile
+1-1llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+1-11 files

LLVM/project 9a31d7bllvm/lib/Transforms/Vectorize SLPVectorizer.cpp

Remove extra parens

Created using spr 1.3.7
DeltaFile
+2-2llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+2-21 files