LLVM/project 8472065clang/docs LifetimeSafety.rst index.rst

Apply changes from code browser

Apply changes from code browser
DeltaFile
+316-172clang/docs/LifetimeSafety.rst
+1-0clang/docs/index.rst
+317-1722 files

LLVM/project 2708cd9llvm/lib/Target/SPIRV SPIRVInstructionSelector.cpp SPIRVEmitIntrinsics.cpp, llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_masked_gather_scatter vector-of-pointers-ptrtoint.ll masked-gather-no-extension.ll

[SPIR-V] Address comments on SPV_INTEL_masked_gather_scatter extension implementation (#186336)

Address comments left after merge of #185418
DeltaFile
+10-10llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp
+4-0llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_masked_gather_scatter/vector-of-pointers-ptrtoint.ll
+2-2llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
+4-0llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_masked_gather_scatter/masked-gather-no-extension.ll
+4-0llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_masked_gather_scatter/masked-gather-scatter.ll
+4-0llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_masked_gather_scatter/masked-scatter-no-extension.ll
+28-122 files not shown
+31-138 files

LLVM/project e4a2d9cclang/lib/AST/ByteCode FunctionPointer.h FunctionPointer.cpp

[clang][bytecode] Remove FunctionPointer class (#186757)

It's been mostly living inside `Pointer` for a long time now, so remove
the leftovers.
DeltaFile
+0-55clang/lib/AST/ByteCode/FunctionPointer.h
+0-36clang/lib/AST/ByteCode/FunctionPointer.cpp
+18-10clang/lib/AST/ByteCode/Pointer.h
+4-9clang/lib/AST/ByteCode/Pointer.cpp
+0-6clang/lib/AST/ByteCode/MemberPointer.cpp
+1-2clang/lib/AST/ByteCode/Interp.cpp
+23-1186 files not shown
+26-12512 files

LLVM/project 3a6604fclang/test/OpenMP target_teams_distribute_parallel_for_simd_schedule_codegen.cpp teams_distribute_parallel_for_simd_schedule_codegen.cpp

Merge branch 'users/kparzysz/e09-affected-loops' into users/kparzysz/e10-check-depth
DeltaFile
+5,294-4,814clang/test/OpenMP/target_teams_distribute_parallel_for_simd_schedule_codegen.cpp
+5,238-4,758clang/test/OpenMP/teams_distribute_parallel_for_simd_schedule_codegen.cpp
+4,350-4,098clang/test/OpenMP/distribute_parallel_for_simd_codegen.cpp
+4,004-3,524clang/test/OpenMP/teams_distribute_parallel_for_schedule_codegen.cpp
+4,000-3,520clang/test/OpenMP/target_teams_distribute_parallel_for_schedule_codegen.cpp
+3,590-3,174clang/test/OpenMP/target_parallel_for_simd_codegen.cpp
+26,476-23,8882,354 files not shown
+201,269-152,3532,360 files

LLVM/project d8399b9clang/test/OpenMP target_teams_distribute_parallel_for_simd_schedule_codegen.cpp teams_distribute_parallel_for_simd_schedule_codegen.cpp

Merge branch 'main' into users/kparzysz/e09-affected-loops
DeltaFile
+5,294-4,814clang/test/OpenMP/target_teams_distribute_parallel_for_simd_schedule_codegen.cpp
+5,238-4,758clang/test/OpenMP/teams_distribute_parallel_for_simd_schedule_codegen.cpp
+4,350-4,098clang/test/OpenMP/distribute_parallel_for_simd_codegen.cpp
+4,004-3,524clang/test/OpenMP/teams_distribute_parallel_for_schedule_codegen.cpp
+4,000-3,520clang/test/OpenMP/target_teams_distribute_parallel_for_schedule_codegen.cpp
+3,590-3,174clang/test/OpenMP/target_parallel_for_simd_codegen.cpp
+26,476-23,8882,354 files not shown
+201,269-152,3532,360 files

LLVM/project 5709638flang/include/flang/Semantics openmp-utils.h, flang/lib/Semantics openmp-utils.cpp

[flang][OpenMP] Implement nest depth calculation in LoopSequence (#186477)

Calculate two depths, a semantic one and a perfect one. The former is
the depth of a loop nest taking into account any loop- or
sequence-transforming OpenMP constructs. The latter is the maximum level
to which the semantic nest is a perfect nest.

Issue: https://github.com/llvm/llvm-project/issues/185287

Reinstate PR185298 after a fix has been merged in PR186416. Includes a
testcase that triggered failures before.
DeltaFile
+135-9flang/lib/Semantics/openmp-utils.cpp
+32-7flang/include/flang/Semantics/openmp-utils.h
+20-0flang/test/Semantics/negate-literal-typedexpr.f90
+187-163 files

LLVM/project 28ab5ddllvm/lib/Target/X86 X86InstrFoldTables.cpp, llvm/test/CodeGen/X86 non-foldable-with-the-same-mask.mir interleave-load-fold.ll

[X86] Blocklist instructions that are unsafe for masked-load folding. (#178888)

This PR blocklist instructions that are unsafe for masked-load folding.

Folding with the same mask is only safe if every active destination
element reads only from source elements that are also active under the
same mask. These instructions perform element rearrangement or
broadcasting, which may cause active destination elements to read from
masked-off source elements.

VPERMILPD and VPERMILPS are safe only in the rrk form, the rik form
needs to be blocklisted. In the rrk form, the masked source operand is a
control mask, while in the rik form the masked source operand is the
data/value. This is also why VPSHUFB is safe to fold, while other
shuffles such as VSHUFPS are not.

Examples:
```
EVEX.128.66.0F.WIG 67 /r VPACKUSWB xmm1{k1}{z}, xmm2, xmm3/m128 

    [35 lines not shown]
DeltaFile
+447-0llvm/test/TableGen/x86-fold-tables.inc
+88-59llvm/test/CodeGen/X86/non-foldable-with-the-same-mask.mir
+105-0llvm/utils/TableGen/X86ManualFoldTables.def
+61-0llvm/utils/TableGen/X86FoldTablesEmitter.cpp
+10-7llvm/test/CodeGen/X86/interleave-load-fold.ll
+8-0llvm/lib/Target/X86/X86InstrFoldTables.cpp
+719-662 files not shown
+728-668 files

LLVM/project c2e739flibcxx/include format, libcxx/include/__format formatter_floating_point.h

[libc++] Avoid including <cmath> in <format> (#186332)

This reduces the time to parse `<format>` a bit.
DeltaFile
+4-4libcxx/include/__format/formatter_floating_point.h
+4-1libcxx/include/format
+0-5libcxx/test/libcxx/transitive_includes/cxx26.csv
+8-103 files

LLVM/project 5b9e292flang/test/Lower/Intrinsics iall.f90 iany.f90

[flang][NFC] Converted five tests from old lowering to new lowering (part 31) (#186299)

Tests converted from test/Lower/Intrinsics: iall.f90, iand.f90,
iany.f90, ibclr.f90, ibits.f90
DeltaFile
+143-84flang/test/Lower/Intrinsics/iall.f90
+58-87flang/test/Lower/Intrinsics/iany.f90
+55-35flang/test/Lower/Intrinsics/iand.f90
+23-19flang/test/Lower/Intrinsics/ibits.f90
+17-15flang/test/Lower/Intrinsics/ibclr.f90
+296-2405 files

LLVM/project d3417c8llvm/lib/Target/AMDGPU SIInsertWaitcnts.cpp

[AMDGPU] Simplify state clearing in SIInsertWaitcnts. NFC. (#186399)

There is no need to clear state at the start or end of the run method,
because a fresh instance of SIInsertWaitcnts is constructed for each run
on a MachineFunction.
DeltaFile
+1-11llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
+1-111 files

LLVM/project 90faf52llvm/lib/Target/AVR AVRExpandPseudoInsts.cpp, llvm/test/CodeGen/AVR/pseudo SPWRITE.mir

[AVR] Optimize expansion of pseudo instruction SPWRITE for no SPH devices (#152905)

fixes https://github.com/llvm/llvm-project/issues/148560
DeltaFile
+14-11llvm/lib/Target/AVR/AVRExpandPseudoInsts.cpp
+1-4llvm/test/CodeGen/AVR/pseudo/SPWRITE.mir
+15-152 files

LLVM/project 2323fb3llvm/lib/Target/AMDGPU SIInsertWaitcnts.cpp

[AMDGPU] Initialize more fields in the SIInsertWaitcnts constructor. NFC. (#186394)

ST, TII, TRI and MRI can all be initialized in the constructor and hence
be references instead of pointers.
DeltaFile
+147-152llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
+147-1521 files

LLVM/project 1dae6fallvm/test/CodeGen/AArch64/GlobalISel legalize-shuffle-1x.ll

[AArch64] Add extra test coverage to legalize-shuffle-1x.ll. NFC
DeltaFile
+55-18llvm/test/CodeGen/AArch64/GlobalISel/legalize-shuffle-1x.ll
+55-181 files

LLVM/project d47aa6borc-rt/include/orc-rt Session.h, orc-rt/lib/executor Session.cpp

[orc-rt] Add Controller Interface (CI) symbol table to Session. (#186747)

The Controller Interface is the extended set of symbols (mostly wrapper
functions) that the controller can call prior to loading any JIT'd code.
It is expected that it will be used to inspect the process and create /
configure services to enable JITing.
DeltaFile
+29-0orc-rt/unittests/SessionTest.cpp
+12-4orc-rt/include/orc-rt/Session.h
+6-0orc-rt/lib/executor/Session.cpp
+47-43 files

LLVM/project fa40c36lldb/test/API/tools/lldb-dap/variables TestDAP_variables.py, lldb/tools/lldb-dap ProtocolUtils.cpp

[lldb-dap] Mark return value as readonly (#186329)

Marked return value as readonly to give VS Code a hint that this
variable doesn't support `setVariable` request.
DeltaFile
+2-1lldb/tools/lldb-dap/ProtocolUtils.cpp
+1-1lldb/test/API/tools/lldb-dap/variables/TestDAP_variables.py
+3-22 files

LLVM/project c3664d5llvm/docs LangRef.rst

[LangRef] Fix typo in signatures for rounding intrinsics (#186709)

Fixes #186536
DeltaFile
+18-18llvm/docs/LangRef.rst
+18-181 files

LLVM/project ee4bb2cllvm/test/Transforms/LoopVectorize predicator.ll, llvm/test/Transforms/LoopVectorize/VPlan predicator.ll

[LV] Add more tests for blend masks. NFC (#186751)

To be used in #184838
DeltaFile
+254-0llvm/test/Transforms/LoopVectorize/VPlan/predicator.ll
+236-0llvm/test/Transforms/LoopVectorize/predicator.ll
+490-02 files

LLVM/project 87f1a2bclang/lib/Sema SemaDecl.cpp, clang/test/Modules pr170099.cppm

[C++20] [Modules] Don't add discardable variables to module initializers (#186752)

Close https://github.com/llvm/llvm-project/issues/170099

The root cause of the problem is, we shouldn't add the inline variable
(which is discardable in linker's point of view) to the module's
initializers.

I verified with GCC's generated code to make the behavior consistent.

This is also a small optimization by the way.
DeltaFile
+20-0clang/test/Modules/pr170099.cppm
+4-1clang/lib/Sema/SemaDecl.cpp
+24-12 files

LLVM/project 5272633mlir/include/mlir/Dialect/Arith/Utils Utils.h, mlir/lib/Dialect/Arith/Transforms EmulateUnsupportedFloats.cpp

[mlir][arith] Use type parser instead of hard-coding type keywords
DeltaFile
+6-21mlir/lib/Dialect/Arith/Utils/Utils.cpp
+6-8mlir/lib/Dialect/Arith/Transforms/EmulateUnsupportedFloats.cpp
+5-8mlir/lib/Dialect/Math/Transforms/ExtendToSupportedTypes.cpp
+3-2mlir/include/mlir/Dialect/Arith/Utils/Utils.h
+1-0mlir/lib/Dialect/Arith/Utils/CMakeLists.txt
+21-395 files

LLVM/project f894e8ellvm/lib/Target/ARM ARMISelLowering.cpp, llvm/test/CodeGen/ARM hoist-and-by-const-from-lshr-in-eqcmp-zero.ll hoist-and-by-const-from-shl-in-eqcmp-zero.ll

[ARM] Try to lower sign bit SELECT_CC to shift (#186349)

Lower a `x < 0 ? 1 : 0` style SELECT_CC to `x>>(bw-1)`. This will become
more important with an upcoming change, but also appears to be somewhat
useful by itself.
DeltaFile
+45-46llvm/test/CodeGen/Thumb/smul_fix_sat.ll
+30-30llvm/test/CodeGen/Thumb2/mve-saturating-arith.ll
+8-41llvm/test/CodeGen/ARM/hoist-and-by-const-from-lshr-in-eqcmp-zero.ll
+6-21llvm/test/CodeGen/ARM/hoist-and-by-const-from-shl-in-eqcmp-zero.ll
+6-0llvm/lib/Target/ARM/ARMISelLowering.cpp
+95-1385 files

LLVM/project d8386dbllvm/lib/CodeGen CommandFlags.cpp

[CodeGen] Call getMCPU once instead of commonly twice (NFC) (#186581)
DeltaFile
+4-2llvm/lib/CodeGen/CommandFlags.cpp
+4-21 files

LLVM/project 3fadb15clang/lib/Basic/Targets X86.cpp, clang/test/Driver cl-x86-flags.c

[X86][APX] Combine MOVABS+JMP to JMPABS when in no-PIC large code model (#186402)
DeltaFile
+18-5llvm/test/CodeGen/X86/tailcc-largecode.ll
+10-3llvm/lib/Target/X86/X86MCInstLower.cpp
+5-4llvm/lib/TargetParser/X86TargetParser.cpp
+4-4clang/test/Driver/cl-x86-flags.c
+8-0llvm/lib/Target/X86/X86InstrCompiler.td
+7-1clang/lib/Basic/Targets/X86.cpp
+52-1711 files not shown
+79-2717 files

LLVM/project 513f34aclang-tools-extra/clang-tidy/readability ImplicitBoolConversionCheck.cpp, clang-tools-extra/docs ReleaseNotes.rst

[clang-tidy] Fix an edge case in readability-implicit-bool-conversion (#186234)

Fix a FP for condition expressions wrapped by `ExprWithCleanups`.

Co-authored-by: EugeneZelenko <eugene.zelenko at gmail.com>
Co-authored-by: Zeyi Xu <zeyi2 at nekoarch.cc>
DeltaFile
+8-0clang-tools-extra/test/clang-tidy/checkers/readability/implicit-bool-conversion-allow-in-conditions.cpp
+7-0clang-tools-extra/docs/ReleaseNotes.rst
+1-1clang-tools-extra/clang-tidy/readability/ImplicitBoolConversionCheck.cpp
+16-13 files

LLVM/project dfd5b85mlir/include/mlir/Dialect/Linalg/TransformOps LinalgTransformOps.td, mlir/include/mlir/Dialect/Linalg/Transforms Transforms.h

[mlir][linalg] Use inferConvolutionDims for generic convolution downscaling (#180586)

The goal of this PR is to implement a generic, structure-aware
convolution downscaling transformation that works for any
convolution-like operation regardless of its specific layout or naming,
rather than relying on pattern-matching against specific named
operations.

Each pattern we currently have, have hardcoded dimension indices
specific to its layout (e.g., NHWC vs NCHW).
This approach :-
1. Requires maintaining many similar patterns.
2. Is brittle when new layouts are introduced.
3. Cannot handle batchless versions of the conv variants.

This PR thus creates a single downscaleSizeOneWindowedConvolution
function that uses `inferConvolutionDims` to semantically understand the
convolution structure (batch dims, output image dims, filter loop dims,
etc.) rather than hardcoding indices.

    [8 lines not shown]
DeltaFile
+184-260mlir/lib/Dialect/Linalg/Transforms/Transforms.cpp
+161-5mlir/test/Dialect/Linalg/transform-op-decompose.mlir
+10-51mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
+5-25mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
+7-3mlir/include/mlir/Dialect/Linalg/TransformOps/LinalgTransformOps.td
+367-3445 files

LLVM/project 9b54420clang/include/clang/AST ASTNodeTraverser.h, clang/lib/AST TextNodeDumper.cpp

[Clang] Dump noexcept expression in compound requirement AST dumps

When a compound requirement has a noexcept(expr) specification, the
expression is now visited as a child node in AST dumps. The text dumper
also shows "noexcept(expr)" instead of just "noexcept" to indicate the
presence of the expression.
DeltaFile
+14-0clang/test/AST/ast-dump-concepts.cpp
+4-1clang/lib/AST/TextNodeDumper.cpp
+3-0clang/include/clang/AST/ASTNodeTraverser.h
+21-13 files

LLVM/project e55e21cclang/include/clang/AST RecursiveASTVisitor.h, clang/test/CXX/expr/expr.prim/expr.prim.req compound-requirement.cpp

Fix noexcept requirement not being checked when concept is used in another concept

The RecursiveASTVisitor was not traversing the noexcept expression in
compound requirements, causing template parameters used only in noexcept
expressions to be missed during constraint normalization.

This resulted in concepts with dependent noexcept requirements (like
noexcept(noexc) where noexc is a template parameter) not being properly
evaluated when the concept was used inside another concept definition.

Fix by adding traversal of getNoexceptExpr() in
TraverseConceptExprRequirement.

Test: Uncommented and verified the test case in compound-requirement.cpp
that was previously commented out because it didn't work.
DeltaFile
+4-4clang/test/CXX/expr/expr.prim/expr.prim.req/compound-requirement.cpp
+2-0clang/include/clang/AST/RecursiveASTVisitor.h
+6-42 files

LLVM/project 7a89035llvm/include/llvm/CodeGen ISDOpcodes.h, llvm/lib/CodeGen/SelectionDAG LegalizeIntegerTypes.cpp SelectionDAGBuilder.cpp

[SelectionDAG] Add CTTZ_ELTS[_ZERO_POISON] nodes. NFCI (#185600)

Currently llvm.experimental.cttz.elts are directly lowered from the
intrinsic.

If the type isn't legal then the target tells SelectionDAGBuilder to
expand it into a reduction, but this means we can't split the operation.
E.g. it's possible to split a cttz.elts nxv32i1 into two nxv16i1,
instead of expanding it into a nxv32i64 reduction.

vp.cttz.elts can be split because it has a dedicated SelectionDAG node.

This adds CTTZ_ELTS and CTTZ_ELTS[_ZERO_POISON] nodes and just enough
legalization to get tests passing. A follow up patch will add splitting
and move the expansion into LegalizeDAG.
DeltaFile
+25-19llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+25-8llvm/test/CodeGen/RISCV/rvv/cttz-elts.ll
+16-13llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+21-0llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
+7-4llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+7-0llvm/include/llvm/CodeGen/ISDOpcodes.h
+101-444 files not shown
+113-4410 files

LLVM/project 54321bcclang/lib/AST ItaniumMangle.cpp, clang/test/CodeGenCXX mangle-requires.cpp

Add mangling support for noexcept(expr) in compound requirements
DeltaFile
+21-4libcxxabi/src/demangle/ItaniumDemangle.h
+21-4llvm/include/llvm/Demangle/ItaniumDemangle.h
+9-2clang/lib/AST/ItaniumMangle.cpp
+2-1clang/test/CodeGenCXX/mangle-requires.cpp
+2-0libcxxabi/test/DemangleTestCases.inc
+2-0llvm/include/llvm/Testing/Demangle/DemangleTestCases.inc
+57-116 files

LLVM/project d4f8667clang/include/clang/AST ExprConcepts.h, clang/lib/AST ASTConcept.cpp

[Clang] Support noexcept(expr) in C++ concepts compound requirements

This patch implements P3822R0 support for noexcept specifications with constant expressions in C++20 concepts compound requirements.

Previously, only 'noexcept' keyword was supported, which is now
equivalent to 'noexcept(true)'.
DeltaFile
+136-0clang/test/CXX/expr/expr.prim/expr.prim.req/compound-requirement.cpp
+61-27clang/lib/Sema/SemaExprCXX.cpp
+25-11clang/lib/Sema/TreeTransform.h
+26-5clang/lib/Parse/ParseExprCXX.cpp
+18-10clang/include/clang/AST/ExprConcepts.h
+11-8clang/lib/AST/ASTConcept.cpp
+277-619 files not shown
+350-8715 files

LLVM/project d303cdfclang/lib/Sema SemaExprCXX.cpp SemaTemplateInstantiate.cpp, clang/test/CXX/expr/expr.prim/expr.prim.req compound-requirement.cpp

Fix noexcept(expr) in compound requirements not instantiating constexpr variables
DeltaFile
+8-28clang/lib/Sema/SemaExprCXX.cpp
+10-0clang/test/CXX/expr/expr.prim/expr.prim.req/compound-requirement.cpp
+9-0clang/lib/Sema/SemaTemplateInstantiate.cpp
+27-283 files