LLVM/project 7581175 — mlir/lib/Dialect/Tensor/Transforms ScalarizeFunctionResult.cpp

[mlir][Tensor] Stop using `getAttrs()` and only copy discardable call attributes explicitly (#226412)

Preserve discardable metadata when recreating a typed direct call; its
builder supplies the inherent fields.

Part of #155475 

Assisted-by: Codex
DeltaFile
+2-1mlir/lib/Dialect/Tensor/Transforms/ScalarizeFunctionResult.cpp
+2-11 files

LLVM/project 49290e8 — llvm/include/llvm/ExecutionEngine/Orc JITTargetMachineBuilder.h, llvm/lib/ExecutionEngine/Orc JITTargetMachineBuilder.cpp

Orc: Move getDefaultDataLayoutForTarget out of line

Try to fix link errors with shared library builds.
DeltaFile
+6-0llvm/lib/ExecutionEngine/Orc/JITTargetMachineBuilder.cpp
+1-4llvm/include/llvm/ExecutionEngine/Orc/JITTargetMachineBuilder.h
+7-42 files

LLVM/project f4620e3 — lld/ELF MarkLive.cpp, lld/test/ELF why-live.test

[LLD][ELF] Skip symbols to dead mergeable section pieces for --why-live (#226238)

Before this change, `--why-live=*` in "why-live.test" incorrectly prints
`live symbol: b.o:(dead)`.
DeltaFile
+11-4lld/ELF/MarkLive.cpp
+2-0lld/test/ELF/why-live.test
+13-42 files

LLVM/project 0131390 — offload/liboffload/src OffloadImpl.cpp

Merge branch 'users/adurang/lazy_liboffload' of https://github.com/llvm/llvm-project into users/adurang/lazy_liboffload
DeltaFile
+2-2offload/liboffload/src/OffloadImpl.cpp
+2-21 files

LLVM/project ac368e5 — flang/include/flang/Lower PFTBuilder.h

[flang][NFC] Say which control successors are not incoming branches

The map records branches, not every control successor: a construct
transferring control between its own statements is not a branch
(F2023 11.2.1 p1), so the successors analyzeBranches sets directly are
absent from it. Say so, rather than calling the map a plain inverse.
DeltaFile
+4-2flang/include/flang/Lower/PFTBuilder.h
+4-21 files

LLVM/project e5ef9e4 — flang/lib/Lower PFTBuilder.cpp, flang/test/Lower pre-fir-tree-assigned-goto.f90

[flang] Resolve an assigned GO TO's targets from the completed assign map

An assigned GO TO reaches any label ASSIGNed to its variable, and a label
list does not bound that: lowering allows a branch to any ASSIGNed label
whether or not the list names it. Branch analysis only sees the ASSIGNs
preceding the GO TO in program order, so the successors it records, and the
incoming branches derived from them, can be incomplete.

The symbol-to-labels map is complete once branch analysis has finished,
which is when the classification runs. Ask it for the full target set
instead of trusting the recorded successors, so a loop whose assigned GO TO
stays within its body is still recognised.
DeltaFile
+45-0flang/test/Lower/pre-fir-tree-assigned-goto.f90
+22-2flang/lib/Lower/PFTBuilder.cpp
+67-22 files

LLVM/project ecc427f — flang/include/flang/Lower PFTDefs.h PFTBuilder.h, flang/lib/Lower PFTBuilder.cpp

[flang] Record the evaluations that branch to each evaluation

The PFT records where each branch goes, but not where it comes from, so
asking whether anything branches into a construct means walking the whole
procedure.

Record the reverse edges beside the forward ones, and print them in PFT
dumps so both directions of the branch graph are visible.
DeltaFile
+68-0flang/test/Lower/pre-fir-tree-incoming-branches.f90
+20-0flang/lib/Lower/PFTBuilder.cpp
+8-8flang/test/Lower/assigned-goto-labeled-end.f90
+3-3flang/test/Lower/trailing-cycle.f90
+3-0flang/include/flang/Lower/PFTDefs.h
+3-0flang/include/flang/Lower/PFTBuilder.h
+105-111 files not shown
+106-127 files

LLVM/project 4ef8979 — flang/lib/Lower Bridge.cpp, flang/test/Lower do-loop-branch-to-loop-header.f90 do_loop_unstructured.f90

[flang] Lower loops whose branching is confined to their body structurally

Such a loop was classified separately by a previous change but still
lowered as unstructured, so its structured form was lost.

Lower it structurally instead, with its body folded into a region that can
hold the branching. The loop keeps its bounds on the op, so it remains
available to whatever transforms or parallelizes it. Only the body is
folded: the loop control statements are emitted as they are for any
structured loop, since a branch from outside may target either of them.

Loops an OpenACC or OpenMP directive owns are lowered the same way, so
they keep their form too.
DeltaFile
+20-134flang/test/Lower/do_loop_unstructured.f90
+119-11flang/lib/Lower/Bridge.cpp
+73-0flang/test/Lower/OpenACC/acc-unstructured-internals.f90
+34-28flang/test/Lower/OpenMP/wsloop-unstructured-cycle.f90
+55-0flang/test/Lower/do-loop-branch-to-loop-header.f90
+50-0flang/test/Lower/OpenMP/metadirective-loop-unstructured.f90
+351-17310 files not shown
+453-24116 files

LLVM/project 6cc6a64 — flang/lib/Lower PFTBuilder.cpp

[flang] Honor the execute-region wrap flag when detecting loop internals

A loop whose branching is confined to its body is lowered with that body
in an scf.execute_region, since the CFG needs more than the single block
fir.do_loop's region admits. With the wrap disabled there is nowhere to
put those blocks, so skip the reclassification and leave the loop
unstructured.
DeltaFile
+7-0flang/lib/Lower/PFTBuilder.cpp
+7-01 files

LLVM/project a23f202 — flang/lib/Lower PFTBuilder.cpp, flang/test/Lower do-loop-infinite-body-cycle.f90

[flang] Keep loops with a non-terminating body unstructured

A loop body that cannot run to completion must not be folded into an
scf.execute_region: the region carries no memory effects, so DCE deletes
it outright, dropping the non-termination and letting execution fall past
the loop. Branches survive that, being terminators.

An infinite DO was already rejected. Follow chains of unconditional GO TOs
as well and reject a body whose chain closes on itself, which is the same
bound the cf.br canonicalization applies to cyclic branches.
DeltaFile
+49-0flang/test/Lower/do-loop-infinite-body-cycle.f90
+30-1flang/lib/Lower/PFTBuilder.cpp
+79-12 files

LLVM/project 6901ea0 — flang/include/flang/Lower PFTBuilder.h, flang/lib/Lower PFTBuilder.cpp

[flang] Detect loops whose branching is confined to their body

A DO loop is classified as either structured or unstructured, and a single
raw branch anywhere in its body forces the loop -- and every construct
enclosing it -- onto the unstructured path.

That is stronger than necessary. A loop keeps its structured control flow
as long as its branching neither leaves its body nor enters it from
outside. Classify such a loop separately from a fully unstructured one.

This only classifies: lowering is unchanged. PFT dumps mark the new
classification with '~', which is what the tests key on.
DeltaFile
+191-23flang/lib/Lower/PFTBuilder.cpp
+137-0flang/test/Lower/pre-fir-tree-unstructured-internals.f90
+51-6flang/include/flang/Lower/PFTBuilder.h
+9-6flang/test/Lower/trailing-cycle.f90
+388-354 files

LLVM/project 245f71a — flang/test/Lower do-loop-infinite-body-cycle.f90

[flang][Test] Cover the lowering of loops with a non-terminating body

A previous change leaves such a loop unstructured. Check what that produces:
the cycle survives as a block branching to itself, no fir.do_loop is emitted
for the loop control, and a loop that only needs a block of its own still
gets the structured form with its body in a region.
DeltaFile
+22-0flang/test/Lower/do-loop-infinite-body-cycle.f90
+22-01 files

LLVM/project af8da03 — orc-rt/include/orc-rt/bedrock Session.h, orc-rt/lib/bedrock NativeDylibManager.cpp

[orc-rt] Make more Session callbacks noexcept. (#226385)

Session's OnDisconnectFn, OnDetachFn, and OnShutdownFn callbacks should
not throw exceptions.
DeltaFile
+23-20orc-rt/test/unit/bedrock/SessionTest.cpp
+7-4orc-rt/test/unit/CommonTestUtils.h
+5-5orc-rt/test/unit/bedrock/sps/SimpleRemoteCATest.cpp
+3-3orc-rt/include/orc-rt/bedrock/Session.h
+1-1orc-rt/test/unit/bedrock/sps/SimpleRemoteCAOverSocketTest.cpp
+1-1orc-rt/lib/bedrock/NativeDylibManager.cpp
+40-341 files not shown
+41-357 files

LLVM/project d689d0f — llvm/test/Instrumentation/DataFlowSanitizer origin_select.ll origin_store.ll

[DFSan] Generate test checks (NFC) (#226410)
DeltaFile
+356-227llvm/test/Instrumentation/DataFlowSanitizer/origin_load.ll
+293-110llvm/test/Instrumentation/DataFlowSanitizer/origin_store.ll
+94-53llvm/test/Instrumentation/DataFlowSanitizer/origin_select.ll
+743-3903 files

LLVM/project 99c4b48 — flang/test/Lower do-loop-infinite-body-cycle.f90

[flang][Test] Cover the lowering of loops with a non-terminating body

A previous change leaves such a loop unstructured. Check what that produces:
the cycle survives as a block branching to itself, no fir.do_loop is emitted
for the loop control, and a loop that only needs a block of its own still
gets the structured form with its body in a region.
DeltaFile
+22-0flang/test/Lower/do-loop-infinite-body-cycle.f90
+22-01 files

LLVM/project 5370c14 — flang/lib/Lower PFTBuilder.cpp, flang/test/Lower do-loop-infinite-body-cycle.f90

[flang] Keep loops with a non-terminating body unstructured

A loop body that cannot run to completion must not be folded into an
scf.execute_region: the region carries no memory effects, so DCE deletes
it outright, dropping the non-termination and letting execution fall past
the loop. Branches survive that, being terminators.

An infinite DO was already rejected. Follow chains of unconditional GO TOs
as well and reject a body whose chain closes on itself, which is the same
bound the cf.br canonicalization applies to cyclic branches.
DeltaFile
+49-0flang/test/Lower/do-loop-infinite-body-cycle.f90
+30-1flang/lib/Lower/PFTBuilder.cpp
+79-12 files

LLVM/project c3d0613 — flang/lib/Lower Bridge.cpp, flang/test/Lower do-loop-branch-to-loop-header.f90 do_loop_unstructured.f90

[flang] Lower loops whose branching is confined to their body structurally

Such a loop was classified separately by a previous change but still
lowered as unstructured, so its structured form was lost.

Lower it structurally instead, with its body folded into a region that can
hold the branching. The loop keeps its bounds on the op, so it remains
available to whatever transforms or parallelizes it. Only the body is
folded: the loop control statements are emitted as they are for any
structured loop, since a branch from outside may target either of them.

Loops an OpenACC or OpenMP directive owns are lowered the same way, so
they keep their form too.
DeltaFile
+20-134flang/test/Lower/do_loop_unstructured.f90
+119-11flang/lib/Lower/Bridge.cpp
+73-0flang/test/Lower/OpenACC/acc-unstructured-internals.f90
+34-28flang/test/Lower/OpenMP/wsloop-unstructured-cycle.f90
+55-0flang/test/Lower/do-loop-branch-to-loop-header.f90
+50-0flang/test/Lower/OpenMP/metadirective-loop-unstructured.f90
+351-17310 files not shown
+453-24116 files

LLVM/project 7ff0f54 — clang/lib/CodeGen CodeGenFunction.h CGStmtOpenMP.cpp

Remove unused OnlyUnresolved parameter
DeltaFile
+2-16clang/lib/CodeGen/CGStmtOpenMP.cpp
+1-2clang/lib/CodeGen/CodeGenFunction.h
+3-182 files

LLVM/project 8ddc681 — flang/lib/Lower PFTBuilder.cpp

[flang] Honor the execute-region wrap flag when detecting loop internals

A loop whose branching is confined to its body is lowered with that body
in an scf.execute_region, since the CFG needs more than the single block
fir.do_loop's region admits. With the wrap disabled there is nowhere to
put those blocks, so skip the reclassification and leave the loop
unstructured.
DeltaFile
+7-0flang/lib/Lower/PFTBuilder.cpp
+7-01 files

LLVM/project 1186ef2 — flang/include/flang/Lower PFTBuilder.h, flang/lib/Lower PFTBuilder.cpp

[flang] Detect loops whose branching is confined to their body

A DO loop is classified as either structured or unstructured, and a single
raw branch anywhere in its body forces the loop -- and every construct
enclosing it -- onto the unstructured path.

That is stronger than necessary. A loop keeps its structured control flow
as long as its branching neither leaves its body nor enters it from
outside. Classify such a loop separately from a fully unstructured one.

This only classifies: lowering is unchanged. PFT dumps mark the new
classification with '~', which is what the tests key on.
DeltaFile
+191-23flang/lib/Lower/PFTBuilder.cpp
+137-0flang/test/Lower/pre-fir-tree-unstructured-internals.f90
+51-6flang/include/flang/Lower/PFTBuilder.h
+9-6flang/test/Lower/trailing-cycle.f90
+388-354 files

LLVM/project f4c0386 — flang/lib/Lower PFTBuilder.cpp, flang/test/Lower pre-fir-tree-assigned-goto.f90

[flang] Resolve an assigned GO TO's targets from the completed assign map

An assigned GO TO reaches any label ASSIGNed to its variable, and a label
list does not bound that: lowering allows a branch to any ASSIGNed label
whether or not the list names it. Branch analysis only sees the ASSIGNs
preceding the GO TO in program order, so the successors it records, and the
incoming branches derived from them, can be incomplete.

The symbol-to-labels map is complete once branch analysis has finished,
which is when the classification runs. Ask it for the full target set
instead of trusting the recorded successors, so a loop whose assigned GO TO
stays within its body is still recognised.
DeltaFile
+45-0flang/test/Lower/pre-fir-tree-assigned-goto.f90
+22-2flang/lib/Lower/PFTBuilder.cpp
+67-22 files

LLVM/project 41165fd — llvm/lib/CodeGen/SelectionDAG TargetLowering.cpp, llvm/test/CodeGen/AMDGPU shufflevector.v3i16.v2i16.ll shufflevector.v3f16.v2f16.ll

[DAG] SimplifyMultipleUseDemandedBits - simplify ISD::SCALAR_TO_VECTOR to ISD::POISON if we don't demand 0th element (#225530)

Equivalent fold to SimplifyDemandedBits/SimplifyDemandedVectorElts

Fixes a number of minor regressions from #217185
DeltaFile
+21-25llvm/test/CodeGen/X86/load-partial-dot-product.ll
+18-23llvm/test/CodeGen/AMDGPU/cvt_f32_ubyte.ll
+0-6llvm/test/CodeGen/AMDGPU/shufflevector.v3i16.v2i16.ll
+0-6llvm/test/CodeGen/AMDGPU/shufflevector.v3f16.v2f16.ll
+0-6llvm/test/CodeGen/AMDGPU/shufflevector.v3bf16.v2bf16.ll
+5-0llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+44-662 files not shown
+44-698 files

LLVM/project 99b4548 — llvm/test/Instrumentation/InstrProfiling conditional-counter-updates.ll

[InstrProfiling] Generate test checks (NFC) (#226409)
DeltaFile
+51-33llvm/test/Instrumentation/InstrProfiling/conditional-counter-updates.ll
+51-331 files

LLVM/project 81e2e44 — llvm/lib/Analysis ScalarEvolution.cpp, llvm/test/Analysis/ScalarEvolution trip-count13.ll

[SCEV] Set BTC to zero, if constant max BTC < BECountIfTaken. (#226098)

If ConstantMaxBECount < BECountIfTaken, we know that the backedge is
never taken and BTC is zero.

No changes in
https://github.com/dtcxzyw/llvm-opt-benchmark-nightly/pull/1426.
The main motivation is to remove another difference between
howManyLessThans
and howManyGreaterThans, which does not have the BECountIfBackedgeTaken
logic and would compute tighter bounds for backedges never taken.

No compile-time impact:
https://llvm-compile-time-tracker.com/compare.php?from=022fdfa1e5a0b85dc785d30b17be3880768b22dc&to=475eeff40ba520620a406a3f615d660ed7c3eec0&stat=instructions:u

PR: https://github.com/llvm/llvm-project/pull/226098
DeltaFile
+27-0llvm/test/Analysis/ScalarEvolution/trip-count13.ll
+14-6llvm/lib/Analysis/ScalarEvolution.cpp
+41-62 files

LLVM/project 6e04b95 — llvm/lib/Target/AArch64 AArch64TargetTransformInfo.cpp

Check for full register predicate loads and stores first
DeltaFile
+7-6llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
+7-61 files

LLVM/project 057ffe9 — llvm/test/CodeGen/AArch64 sve-int-arith.ll

Avoid undefined ABI for add as well
DeltaFile
+23-9llvm/test/CodeGen/AArch64/sve-int-arith.ll
+23-91 files

LLVM/project 6fda624 — llvm/test/CodeGen/AArch64 sve-int-arith.ll

Add explicit codegen tests for nxv1 mul and sub
DeltaFile
+29-4llvm/test/CodeGen/AArch64/sve-int-arith.ll
+29-41 files

LLVM/project 52cb4d9 — llvm/lib/Target/AArch64 AArch64TargetTransformInfo.cpp, llvm/test/Analysis/CostModel/AArch64 sve-arith.ll sve-ldst.ll

[AArch64][CostModel] Consider some nxv1 operations as legal

This is allowing some operations on vscale x 1 types, namely:
 - load/store
 - masked load/store
 - arithmetic instructions like add/sub/mul

For those, there is already codegen coverage. See e.g.
 - llvm/test/CodeGen/AArch64/sve-int-arith.ll
 - llvm/test/CodeGen/AArch64/sve-load-store-legalisation.ll
 - llvm/test/CodeGen/AArch64/sve-masked-gather.ll
 - llvm/test/CodeGen/AArch64/sve-masked-scatter.ll
DeltaFile
+22-41llvm/test/Analysis/CostModel/AArch64/masked_ldst.ll
+30-20llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
+4-4llvm/test/Analysis/CostModel/AArch64/sve-ldst.ll
+0-6llvm/test/Transforms/LoopVectorize/AArch64/scalable-call.ll
+3-3llvm/test/Transforms/LoopVectorize/AArch64/scalable-vectorization-cost-tuning.ll
+3-3llvm/test/Analysis/CostModel/AArch64/sve-arith.ll
+62-773 files not shown
+65-809 files

LLVM/project 0b8d349 — llvm/test/Analysis/CostModel/AArch64 masked_ldst.ll

Avoid new undef in IR
DeltaFile
+14-14llvm/test/Analysis/CostModel/AArch64/masked_ldst.ll
+14-141 files

LLVM/project a465ac2 — clang/lib/AST APValue.cpp

[clang][NFC] Use llvm::ListSeparator in APValue::printPretty (#226125)

Instead of the manual `First` flag tracking.
DeltaFile
+6-12clang/lib/AST/APValue.cpp
+6-121 files