LLVM/project c463b75llvm/lib/Target/AArch64 AArch64AsmPrinter.cpp

[AArch64] Factor out handling of AUTRELLOADPAC addend in AsmPrinter (NFC) (#192076)

In `AArch64AsmPrinter`, move the emission of code that handles the
Addend operand of AUTRELLOADPAC from `emitPtrauthAuthResign` to a
separate function.

Make use of recently added helper functions and update the comments.

Refer to named `Pointer` and `Scratch` registers instead of
hardcoding X16 and X17.
DeltaFile
+67-66llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
+67-661 files

LLVM/project 4f50ce2llvm/lib/Transforms/IPO FunctionAttrs.cpp, llvm/test/Transforms/FunctionAttrs noundef.ll

[FunctionAttrs] Don't infer noundef when return has nofpclass (#191822)

- Fixes: #191338

nofpclass violations on a return produce poison.
Poison returns marked noundef are UB.
This turns off noundef inference when nofpclass attributes are present.

---------

Co-authored-by: Shonie Caplan <shonie at genki.com>
Co-authored-by: Yingwei Zheng <dtcxzyw at qq.com>
DeltaFile
+26-0llvm/test/Transforms/FunctionAttrs/noundef.ll
+8-0llvm/lib/Transforms/IPO/FunctionAttrs.cpp
+34-02 files

LLVM/project 0162dbcflang/include/flang/Evaluate match.h

[flang] Fix some typos in comments, NFC (#192445)
DeltaFile
+2-2flang/include/flang/Evaluate/match.h
+2-21 files

LLVM/project 0e5cad0mlir/lib/Dialect/Vector/IR VectorOps.cpp, mlir/test/Dialect/Vector/canonicalize vector-extract.mlir

[mlir][vector] Fold vector extract from insert when trailing unit dims (#192109)

Upstreamed from https://github.com/iree-org/iree/pull/23789

Folds vector.extract from vector.insert when the extract position is a
prefix of the insert position and the remaining (un-indexed) dimensions
of the extracted sub-vector are all size 1. In that case the extracted
value is fully determined by the inserted value.

Example:
  %ins = vector.insert %s, %v [3, 0] : f32 into vector<16x1xf32>
  %ext = vector.extract %ins [3] : vector<1xf32> from vector<16x1xf32>
folds to:
  %ext = vector.broadcast %s : f32 to vector<1xf32>

Co-authored-by: Jakub Kuderski <kubakuderski at gmail.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply at anthropic.com>
DeltaFile
+128-0mlir/test/Dialect/Vector/canonicalize/vector-extract.mlir
+62-1mlir/lib/Dialect/Vector/IR/VectorOps.cpp
+190-12 files

LLVM/project 5cf3e0eclang/lib/Driver/ToolChains Hexagon.cpp Hexagon.h, clang/test/Driver hexagon-toolchain-picolibc.c

[Clang][Hexagon] Use --cstdlib flag to choose Picolibc (#183257)

Update the Hexagon toolchain to use --cstdlib flag to allow users to
choose Picolibc as the C library.
This allows proper selection of C library when targeting
Hexagon environments.

depends on https://github.com/llvm/llvm-project/pull/183254

Signed-off-by: Kushal Pal <kushpal at qti.qualcomm.com>
DeltaFile
+120-0clang/test/Driver/hexagon-toolchain-picolibc.c
+75-29clang/lib/Driver/ToolChains/Hexagon.cpp
+8-2clang/lib/Driver/ToolChains/Hexagon.h
+4-0clang/test/Driver/Inputs/hexagon_tree/Tools/target/picolibc/hexagon-unknown-none-elf/readme
+4-0clang/test/Driver/Inputs/hexagon_tree/Tools/target/picolibc/readme
+4-0clang/test/Driver/Inputs/hexagon_tree/Tools/target/picolibc/hexagon-unknown-none-elf/include/c++/readme
+215-312 files not shown
+223-318 files

LLVM/project d78f85ellvm/lib/CodeGen/GlobalISel GISelValueTracking.cpp, llvm/test/CodeGen/AArch64/GlobalISel knownfpclass.ll

[GlobalISel] Fix getShuffleDemandedElts input lanes in computeKnownFPClass (#192288)

The number of lanes needs to be for the input type, not the return, as
they can be different in GISel. This prevents an assert about invalid
shuffle mask constant from getShuffleDemandedElts.
DeltaFile
+23-0llvm/test/CodeGen/AArch64/GlobalISel/knownfpclass.ll
+3-3llvm/lib/CodeGen/GlobalISel/GISelValueTracking.cpp
+26-32 files

LLVM/project a9a2d25clang/lib/CIR/CodeGen CIRGenFunction.cpp CIRGenFunction.h, clang/test/CIR/CodeGen init-list-lvalue.cpp

[CIR] Implement LValue InitListExpr and FunctionalCastExpr lowering (#192298)

First, this fixes the InitListExpr lowering. This copies the same
implementation from classic-codegen, and adds some tests (this is
    otherwise untested in classic codegen?).

Second, while I was writing tests for the above, I accidented into the
FunctionalCastExpr, which just calls emitCastLValue, so this fixes that
as well.
DeltaFile
+74-0clang/test/CIR/CodeGen/init-list-lvalue.cpp
+14-1clang/lib/CIR/CodeGen/CIRGenFunction.cpp
+1-0clang/lib/CIR/CodeGen/CIRGenFunction.h
+89-13 files

LLVM/project 5af0148flang/include/flang/Evaluate match.h

[flang] Fix some typos in comments, NFC
DeltaFile
+2-2flang/include/flang/Evaluate/match.h
+2-21 files

LLVM/project 46bbbdeclang/lib/Sema SemaAttr.cpp, clang/test/Sema warn-lifetime-safety.cpp warn-lifetime-safety-suggestions.cpp

[LifetimeSafety] Add lifetimebound inference for std::make_unique (#191632)

Enhanced lifetime safety analysis to support `std::make_unique` by
propagating `lifetimebound` attributes from constructor parameters to
`make_unique` parameters.

- Added special handling for `std::make_unique` in
`inferLifetimeBoundAttribute()` to automatically propagate
`lifetimebound` attributes from the constructed type's constructor
parameters to the corresponding `make_unique` parameters
- Extended GSL owner type handling in assignment operations within
`FactsGenerator::VisitCXXOperatorCallExpr()`

`std::make_unique` is a common factory function that forwards arguments
to constructors. Without this enhancement, lifetime safety analysis
couldn't detect when `make_unique` was being used to create objects with
lifetimebound dependencies, leading to missed warnings about potential
dangling references. This change ensures that lifetime safety analysis
works seamlessly with modern C++ idioms using smart pointer factory

    [14 lines not shown]
DeltaFile
+109-5clang/test/Sema/warn-lifetime-safety.cpp
+37-0clang/lib/Sema/SemaAttr.cpp
+22-0clang/test/Sema/warn-lifetime-safety-suggestions.cpp
+17-0clang/test/Sema/warn-lifetime-safety-dangling-field.cpp
+11-1clang/test/Sema/warn-lifetime-analysis-nocfg.cpp
+6-0clang/test/Sema/Inputs/lifetime-analysis.h
+202-63 files not shown
+209-79 files

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

Address comments

* Limit support to 'mul/fmul' binops.
* assert that a VPExpression can be used to represent a partial reduction.
* Remove dead code from tryToMatchAndCreateExtendedReduction and tryToMatchAndCreateMulAccumulateReduction.
DeltaFile
+9-29llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+9-291 files

LLVM/project ac2c986llvm/include/llvm/Analysis TargetTransformInfo.h, llvm/include/llvm/CodeGen BasicTTIImpl.h

[LV][NFC] Rename ScalarEpilogueLowering to EpilogueLowering (#191871)

Rename ScalarEpilogueLowering enum to EpilogueLowering.
The term 'scalar' is misleading given that the epilogue could be
vectorized.
Also rename the enum values to use the tail-folding term instead of
predication, as it's more clear.
DeltaFile
+86-87llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+10-9llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp
+2-2llvm/include/llvm/CodeGen/BasicTTIImpl.h
+2-2llvm/include/llvm/Analysis/TargetTransformInfo.h
+2-2llvm/lib/Analysis/TargetTransformInfo.cpp
+2-2llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+104-1046 files not shown
+110-11012 files

LLVM/project 76d51b7libc CMakeLists.txt, libc/test CMakeLists.txt

[libc][cmake] Remove dependencies for bare-metal hermetic testing (#192242)

Unit tests can be disabled on bare-metal as they will fail to build. To
prevent the check-libc and check-libc-lit targets from always attempting
to build them, the dependencies are now set conditionally according to
the relevant CMake options.
DeltaFile
+9-2libc/test/CMakeLists.txt
+2-0libc/CMakeLists.txt
+11-22 files

LLVM/project 8a7d3b8llvm/test/Transforms/InstCombine urem-via-cmp-select.ll

suppress fixpoint error
DeltaFile
+4-1llvm/test/Transforms/InstCombine/urem-via-cmp-select.ll
+4-11 files

LLVM/project 5a432e2llvm/lib/Target/LoongArch LoongArchLSXInstrInfo.td LoongArchLASXInstrInfo.td, llvm/lib/Target/LoongArch/AsmParser LoongArchAsmParser.cpp

Address wanglei's comments
DeltaFile
+12-24llvm/lib/Target/LoongArch/LoongArchLSXInstrInfo.td
+12-24llvm/lib/Target/LoongArch/LoongArchLASXInstrInfo.td
+1-4llvm/lib/Target/LoongArch/LoongArchInstrInfo.td
+0-1llvm/lib/Target/LoongArch/AsmParser/LoongArchAsmParser.cpp
+25-534 files

LLVM/project 2d62a2ellvm/lib/Transforms/Vectorize VPlanTransforms.cpp

Address review comments
DeltaFile
+4-5llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+4-51 files

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

Address review comments
DeltaFile
+4-6llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+4-61 files

LLVM/project 2cb3d69llvm/lib/Transforms/Vectorize VPlanTransforms.cpp

[LV] NFCI: Create VPExpressions in transformToPartialReductions.

With this change, all logic to generate partial reductions and
recognising them as VPExpressions is contained in
`transformToPartialReductions`, without the need for a second
transform pass.
The PR intends to be a non-functional change.
DeltaFile
+57-18llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+57-181 files

LLVM/project 09f6992clang/lib/AST/ByteCode Compiler.cpp, clang/test/AST/ByteCode unions.cpp

[clang][bytecode] Don't implicitly begin union member lifetime... (#192212)

... on assignment operator calls if the LHS type does not have a
non-deleted trivial default constructor.
DeltaFile
+35-0clang/test/AST/ByteCode/unions.cpp
+4-1clang/lib/AST/ByteCode/Compiler.cpp
+39-12 files

LLVM/project c327d51clang/include/clang/Basic arm_sve.td, clang/test/CodeGen/AArch64/sve2p3-intrinsics acle_sve2p3_luti6.c

fixup! Adjust definitions after ACLE updates from @rockdreamer
DeltaFile
+12-12clang/test/CodeGen/AArch64/sve2p3-intrinsics/acle_sve2p3_luti6.c
+4-4clang/test/Sema/aarch64-sve2p3-intrinsics/acle_sve2p3_target.c
+1-1clang/include/clang/Basic/arm_sve.td
+17-173 files

LLVM/project 167e7e7flang/include/flang/Semantics openmp-utils.h, flang/lib/Semantics openmp-utils.cpp resolve-directives.cpp

[flang][OpenMP] Identify DO loops affected by loop-associated construct (#191719)

This is to identify iteration variables of DO loops affected by an
OpenMP loop construct. These variables are privatized as per
data-sharing rules.

Issue: https://github.com/llvm/llvm-project/issues/191249
DeltaFile
+96-0flang/lib/Semantics/openmp-utils.cpp
+33-36flang/lib/Semantics/resolve-directives.cpp
+27-0flang/test/Semantics/OpenMP/affected-loops.f90
+9-0flang/include/flang/Semantics/openmp-utils.h
+165-364 files

LLVM/project 48cd915clang/lib/Sema SemaARM.cpp, clang/test/Sema/aarch64-sve2p3-intrinsics acle_sve2p3_target_lane.c

fixup! More small PR fixes
DeltaFile
+0-44llvm/test/Verifier/AArch64/luti6-intrinsics.ll
+6-9llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
+5-8llvm/test/CodeGen/AArch64/sve2p3-intrinsics-luti6.ll
+8-1clang/test/Sema/aarch64-sve2p3-intrinsics/acle_sve2p3_target_lane.c
+1-4llvm/test/CodeGen/AArch64/sme2p3-intrinsics-luti6.ll
+1-2clang/lib/Sema/SemaARM.cpp
+21-682 files not shown
+23-698 files

LLVM/project 4e9b3a7llvm/include/llvm/IR IntrinsicsAArch64.td, llvm/lib/Target/AArch64 AArch64ISelDAGToDAG.cpp

fixup! Fix PR comments
DeltaFile
+24-70llvm/test/CodeGen/AArch64/sme2p3-intrinsics-luti6.ll
+19-55llvm/test/Verifier/AArch64/luti6-intrinsics.ll
+17-36llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
+15-33llvm/test/CodeGen/AArch64/sve2p3-intrinsics-luti6.ll
+0-1llvm/include/llvm/IR/IntrinsicsAArch64.td
+75-1955 files

LLVM/project f8bbfffclang/include/clang/Basic arm_sve.td, clang/test/CodeGen/AArch64/sve2p3-intrinsics acle_sve2p3_luti6.c

fixup! Fix final PR comments for now
DeltaFile
+118-8clang/test/CodeGen/AArch64/sve2p3-intrinsics/acle_sve2p3_luti6.c
+5-0llvm/lib/Target/AArch64/SVEInstrFormats.td
+1-1clang/include/clang/Basic/arm_sve.td
+1-0llvm/test/Verifier/AArch64/luti6-intrinsics.ll
+125-94 files

LLVM/project 0500594clang/test/Sema/aarch64-sve2p3-intrinsics acle_sve2p3_target_lane.c acle_sve2p3_imm.cpp, llvm/test/CodeGen/AArch64 sve2p3-intrinsics-luti6.ll

fixup! Add some more _bf16 tests
DeltaFile
+27-0clang/test/Sema/aarch64-sve2p3-intrinsics/acle_sve2p3_target_lane.c
+11-0llvm/test/CodeGen/AArch64/sve2p3-intrinsics-luti6.ll
+3-0clang/test/Sema/aarch64-sve2p3-intrinsics/acle_sve2p3_imm.cpp
+41-03 files

LLVM/project f006accclang/include/clang/Basic arm_sve.td arm_sme.td, clang/test/CodeGen/AArch64/sme2p3-intrinsics acle_sme2p3_luti6.c

fixup! Adjust `def`s and split out tests
DeltaFile
+0-158clang/test/CodeGen/AArch64/sve2p3-intrinsics/acle_sve2p3_luti6.c
+138-0clang/test/CodeGen/AArch64/sve2p3-intrinsics/acle_sve2p3_luti6_lane_x2.c
+5-5clang/test/CodeGen/AArch64/sme2p3-intrinsics/acle_sme2p3_luti6.c
+0-4clang/include/clang/Basic/arm_sve.td
+1-0clang/include/clang/Basic/arm_sme.td
+144-1675 files

LLVM/project fd4361aclang/include/clang/Basic arm_sve.td, clang/lib/Sema SemaARM.cpp

fixup! Address more PR comments
DeltaFile
+3-20clang/lib/Sema/SemaARM.cpp
+0-9clang/test/Sema/aarch64-sve2p3-intrinsics/acle_sve2p3_target_lane.c
+4-1clang/include/clang/Basic/arm_sve.td
+1-1clang/test/Sema/aarch64-sme2p3-intrinsics/acle_sme2p3_target_lane.c
+8-314 files

LLVM/project 83643d1clang/test/Sema/aarch64-sve2p3-intrinsics acle_sve2p3_target_lane.c acle_sve2p3_target.c, llvm/lib/Target/AArch64 AArch64SVEInstrInfo.td AArch64InstrInfo.td

fixup! Move tests
DeltaFile
+0-54clang/test/Sema/aarch64-sve2p3-intrinsics/acle_sve2p3_target_lane.c
+38-3clang/test/Sema/aarch64-sve2p3-intrinsics/acle_sve2p3_target.c
+1-1llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
+1-0llvm/lib/Target/AArch64/AArch64InstrInfo.td
+40-584 files

LLVM/project 90feda3clang/include/clang/Basic arm_sve.td, clang/test/Sema/aarch64-sme2p3-intrinsics acle_sme2p3_target_lane.c acle_sme2p3_target.c

fixup! Address more PR comments
DeltaFile
+15-9clang/test/Sema/aarch64-sve2p3-intrinsics/acle_sve2p3_target_lane.c
+0-16clang/test/Sema/aarch64-sme2p3-intrinsics/acle_sme2p3_target_lane.c
+5-5llvm/test/CodeGen/AArch64/sme2p3-intrinsics-luti6.ll
+3-3clang/test/Sema/aarch64-sme2p3-intrinsics/acle_sme2p3_target.c
+1-4llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
+4-0clang/include/clang/Basic/arm_sve.td
+28-371 files not shown
+28-387 files

LLVM/project 36a513eclang/lib/Sema SemaARM.cpp, clang/test/CodeGen/AArch64/sme2p3-intrinsics acle_sme2p3_luti6.c

fixup! Address more PR comments
DeltaFile
+21-3clang/lib/Sema/SemaARM.cpp
+12-4clang/test/CodeGen/AArch64/sme2p3-intrinsics/acle_sme2p3_luti6.c
+4-12llvm/include/llvm/IR/IntrinsicsAArch64.td
+6-6clang/test/CodeGen/AArch64/sve2p3-intrinsics/acle_sve2p3_luti6.c
+9-0clang/test/Sema/aarch64-sve2p3-intrinsics/acle_sve2p3_target_lane.c
+2-3llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
+54-284 files not shown
+59-3410 files

LLVM/project 6b86b43llvm/lib/Target/AArch64 AArch64ISelDAGToDAG.cpp

fixup! Add overloaded AArch64DAGToDAGISel::EmitMultiVectorLutiLane() for reuse
DeltaFile
+39-50llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
+39-501 files