LLVM/project 024a691llvm/lib/Transforms/Vectorize VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize/AArch64 vector-reverse.ll

[VPlan] Pull out reverses and splice.lefts from elementwise operations (#199234)

InstCombine pulls reverses up and out of operations, e.g.
`binop(reverse(x), reverse(y)) -> reverse(binop(x,y))`. This reduces the
overall number of reverses, and also allows the `reverse(reverse(x))`
combine to kick in much more.

This implements the same canonicalization in VPlan which allows for more
vectorization due to cost model improvements, and generally handles more
cases when there's predication involved. 

If we have a reversed load and reversed store whose stores are now
eliminated, we will be left with just two reversed masks on the load and
store. But with EVL tail folding this will leave behind a
`splice.right(ops(splice.left(...)))` pair on the value from memory.

InstCombine can fold away a pair of `vp.reverse(ops(vp.reverse(...)))`,
but it can't fold a pair of splices. So to prevent regressions we also
have to pull splice.lefts like `ops(splice.left(poison, x, evl)) ->

    [2 lines not shown]
DeltaFile
+139-54llvm/test/Transforms/LoopVectorize/ARM/tail-folding-counting-down.ll
+86-55llvm/test/Transforms/LoopVectorize/X86/masked_load_store.ll
+36-36llvm/test/Transforms/LoopVectorize/PowerPC/optimal-epilog-vectorization.ll
+18-50llvm/test/Transforms/LoopVectorize/RISCV/riscv-vector-reverse.ll
+66-0llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+18-12llvm/test/Transforms/LoopVectorize/AArch64/vector-reverse.ll
+363-20712 files not shown
+401-26618 files

LLVM/project 2f07e6bclang/include/clang/AST TypeBase.h, clang/lib/AST Type.cpp

[Clang] Fix missing vtable for `dynamic_cast<FinalClass &>(*this)` in a function template (#207349)

This is a follow-up to #202594, which fixed a pointer cast, but not
a reference cast. Surprisingly, `CXXDynamicCastExpr::getType()`
for a reference cast is a `RecordType` and not a `ReferenceType`.

How this happens:
In `Sema::BuildCXXNamedCast`, a `CastOperation Op` variable
is constructed. The `CastOperation` constructor initializes
`ResultType(destType.getNonLValueExprType(S.Context))`
where `QualType::getNonLValueExprType` turns a `ReferenceType` into
a `RecordType`. `Sema::BuildCXXNamedCast` then passes `Op.ResultType`
to `CXXDynamicCastExpr::Create`.
DeltaFile
+14-0clang/test/CodeGenCXX/dynamic-cast-exact.cpp
+4-1clang/lib/Sema/SemaTemplateInstantiate.cpp
+1-1clang/include/clang/AST/TypeBase.h
+1-1clang/lib/AST/Type.cpp
+20-34 files

FreeBSD/ports 0a6419asysutils/vm-bhyve distinfo Makefile

sysutils/vm-bhyve: Update to 1.7.4

Changes:        https://github.com/freebsd/vm-bhyve/releases/tag/v1.7.4
DeltaFile
+3-3sysutils/vm-bhyve/distinfo
+1-1sysutils/vm-bhyve/Makefile
+4-42 files

LLVM/project 5f33a29llvm/lib/Transforms/Vectorize VPlanValue.h VPlanTransforms.cpp

[VPlan] Introduce VPConstant VPIRValue (NFC) (#207387)

There a gap in the VPIRValue class hierarchy, where constant live-ins
are absent, when this is in fact a very common case. The motivation of
introducing this new class is to refine optimizations to account for the
fact that non-constant live-ins need broadcast.
DeltaFile
+19-5llvm/lib/Transforms/Vectorize/VPlanValue.h
+3-4llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+22-92 files

LLVM/project d582a7dflang-rt/lib/runtime io-api-server.cpp

[flang-rt] Fix io-api-server when building for arm64ec (#207998)
DeltaFile
+5-0flang-rt/lib/runtime/io-api-server.cpp
+5-01 files

FreeNAS/freenas 968b57csrc/middlewared/middlewared/api/v27_0_0 boot_environments.py, src/middlewared/middlewared/plugins/boot_ environments.py

NAS-141701 / 27.0.0-BETA.1 / Split boot environment service into its own typesafe plugin (#19276)

## Context
The boot.environment service lived inside the boot plugin group
(boot_/environments.py) as a legacy dict-based Service with a
hand-written filterable query and dict-returning actions. It is
CRUD-shaped but datastore-less (query/get_instance read live ZFS via
zectl/zpool), keyed by a string BE name, with custom write actions
rather than create/update/delete.

## Solution
Moved it to a new standalone plugin (plugins/boot_environment/)
converted to the typesafe pattern: a lean
GenericCRUDService[BootEnvironmentEntry, str] delegating to a
BootEnvironmentServicePart whose query/get_instance are overridden to
build BootEnvironmentEntry models directly (no datastore).
activate/clone/destroy/keep are @api_method(check_annotations=True)
actions and promote_current_datasets stays a private boot-time hook. The
service registers under a new BootServicesContainer at self.boot, which

    [17 lines not shown]
DeltaFile
+0-213src/middlewared/middlewared/plugins/boot_/environments.py
+153-0src/middlewared/middlewared/plugins/boot_environment/crud.py
+120-0src/middlewared/middlewared/plugins/boot_environment/__init__.py
+34-12src/middlewared/middlewared/api/v27_0_0/boot_environments.py
+19-0src/middlewared/middlewared/plugins/boot_environment/utils.py
+6-8src/middlewared/middlewared/plugins/update_/install.py
+332-2334 files not shown
+346-23810 files

FreeNAS/freenas c311f82src/middlewared/middlewared/api/v26_0_0 replication.py, tests/api2 test_replication.py test_replication_utils.py

Fix `replication.target_unmatched_snapshots` crash due to invalid schema

(cherry picked from commit 9cee73685a6ed19df7191985037f66102006a46b)
DeltaFile
+252-1tests/api2/test_replication.py
+70-1tests/api2/test_replication_utils.py
+1-1src/middlewared/middlewared/api/v26_0_0/replication.py
+323-33 files

LLVM/project dd37265llvm/include/llvm/Transforms/Utils Local.h BasicBlockUtils.h, llvm/lib/CodeGen CodeGenPrepare.cpp

[CodeGenPrepare] Cache known-live PHIs when deleting dead PHI chains (#207191)

This patch fixes a compile-time issue in CodeGenPrepare for huge
functions.

`DeleteDeadPHIs` may repeatedly prove overlapping PHI chains non-dead.
For very large functions, many PHIs can share the same non-dead def-use
suffix, causing the same suffix to be scanned many times.

Add an `KnownNonDeadPHIs` cache to `RecursivelyDeleteDeadPHINode`
and `DeleteDeadPHIs`. When a chain is proven non-dead, visited PHIs are
recorded so later queries can stop once they reach one of them.

This reduces the pathological CodeGenPrepare case from ~30mins to ~30s.
DeltaFile
+14-5llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
+16-3llvm/lib/Transforms/Utils/Local.cpp
+5-4llvm/include/llvm/Transforms/Utils/Local.h
+4-3llvm/include/llvm/Transforms/Utils/BasicBlockUtils.h
+2-1llvm/lib/CodeGen/CodeGenPrepare.cpp
+41-165 files

FreeNAS/freenas 6c02efcsrc/freenas/usr/bin install-dev-tools, src/middlewared/middlewared/api/v26_0_0 replication.py

Fix `replication.target_unmatched_snapshots` crash due to invalid result schema (#19275)

Additionally, reach 99% tests coverage for replication plugin.
DeltaFile
+252-1tests/api2/test_replication.py
+70-1tests/api2/test_replication_utils.py
+1-1src/middlewared/middlewared/api/v26_0_0/replication.py
+1-1src/middlewared/middlewared/api/v27_0_0/replication.py
+1-0src/freenas/usr/bin/install-dev-tools
+325-45 files

LLVM/project 0b8d6efflang/lib/Optimizer/OpenMP HostOpFiltering.cpp, flang/test/Lower/OpenMP function-filtering-4.f90 host-eval.f90

[Flang][MLIR][OpenMP] Move host op filtering to the omp dialect

The MLIR pass that removes operations exclusively intended for the host
from OpenMP target offload modules is currently defined as part of
Flang. However, this is a feature that would benefit from being reusable
by other frontends, as removing such operations is a requirement for all
OpenMP target device modules prior to LLVM IR translation.

By moving the `omp-host-op-filtering` pass out of Flang, it had to be
updated to work on a lower-level LLVM dialect-based representation,
rather than FIR. This simplified some of the existing edge cases, such
as `fir.declare` ops and `fir.boxchar` type handling. In addition, new
function arguments are introduced as placeholders and return values from
host-only functions are removed, producing a cleaner result and
simplifying the pass as compared to previously.

As a result of a later execution of this pass, dynamic dispatch of host
functions via dispatch table using `fir.dispatch`, `fir.type_info` and
`fir.dt_entry` ops would break due to the removal of `fir.dt_entry`

    [6 lines not shown]
DeltaFile
+0-560flang/test/Transforms/OpenMP/function-filtering-host-ops.mlir
+500-0mlir/test/Dialect/OpenMP/host-op-filtering.mlir
+0-422flang/lib/Optimizer/OpenMP/HostOpFiltering.cpp
+292-0mlir/lib/Dialect/OpenMP/Transforms/HostOpFiltering.cpp
+63-0flang/test/Lower/OpenMP/function-filtering-4.f90
+18-32flang/test/Lower/OpenMP/host-eval.f90
+873-1,0147 files not shown
+920-1,04613 files

LLVM/project fdfdcb6flang/lib/Optimizer/OpenMP HostOpFiltering.cpp, flang/test/Transforms/OpenMP function-filtering-host-ops.mlir

[Flang][MLIR][OpenMP] Fix declare_target globals visibility

This patch introduces various changes to the handling of
`declare_target` global variables in Flang:
- Non-`declare_target` globals are unconditionally made "internal" when
  compiling for an OpenMP offload target. This prevents potential symbol
  redefinition issues related to globals that don't actually exist on the
  device.
- Local SAVE variables handling for OpenMP offloading programs is fixed to
  prevent their associated "internal" linkage from producing broken
  device code for `declare_target enter(...)`.
- When globals are indirectly accessed from the target device (e.g.
  `declare_target link(...)`), the associated and unused full-storage
  global is marked with "internal" linkage to facilitate later removal.
- `declare_target device_type(host) enter(...)` variables are set to
  external linkage when compiling for a target device, causing linker
  errors if accessed. This mirrors Clang's behavior.
DeltaFile
+252-0mlir/test/Target/LLVMIR/omptarget-declare-target-all-device-types-device.mlir
+44-9mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+20-5flang/lib/Optimizer/OpenMP/HostOpFiltering.cpp
+17-4flang/test/Transforms/OpenMP/function-filtering-host-ops.mlir
+1-0mlir/test/Target/LLVMIR/omptarget-declare-target-llvm-device.mlir
+334-185 files

LLVM/project cd85482llvm/lib/Target/AArch64 AArch64MacroFusion.cpp, llvm/test/CodeGen/AArch64 misched-fusion-arith-cbz.mir misched-fusion-arith-cbz.ll

[AArch64] Add missing arithmetic to arith+cb(n)z clustering (#203721)

This patch adds a few missing opcodes for arithmetic+CB(N)Z clustering.
Most of them complement an already existing rr/rs variant for
pre/post-RA coverage. The only one which is completely new is ORN which
I think can be reasonably expected to behave similarly on AArch64
targets.
DeltaFile
+506-0llvm/test/CodeGen/AArch64/misched-fusion-arith-cbz.mir
+144-0llvm/test/CodeGen/AArch64/misched-fusion-arith-cbz.ll
+10-0llvm/lib/Target/AArch64/AArch64MacroFusion.cpp
+660-03 files

LLVM/project 293a55cllvm/test/CodeGen/AArch64/GlobalISel inline-memcpy.mir inline-memmove.mir

[GlobalISel][AArch64] Remove IRs from inline-{memcpy,memmove} tests (NFC) (#208066)
DeltaFile
+62-111llvm/test/CodeGen/AArch64/GlobalISel/inline-memcpy.mir
+43-85llvm/test/CodeGen/AArch64/GlobalISel/inline-memmove.mir
+105-1962 files

FreeBSD/ports 472c967net-p2p/rtorrent Makefile, net-p2p/rtorrent/files patch-Fix-i386

net-p2p/rtorrent: Really unbreak i386

Apply upstream patch that fixes command_base t_pod align static asserts
that caused i386 build to fail.

Fixes:          917ab14124a2 ("net-p2p/rtorrent: Unbreak i386")
DeltaFile
+76-0net-p2p/rtorrent/files/patch-Fix-i386
+0-2net-p2p/rtorrent/Makefile
+76-22 files

LLVM/project dcf1b8fclang/include/clang/AST DeclFriend.h, clang/lib/AST ASTImporter.cpp

[Clang] support friend declarations with a dependent nested-name-specifier (#191268)

Fixes #104057

---

This patch adds support for friend declarations with a dependent NNS
DeltaFile
+658-105clang/lib/Sema/SemaAccess.cpp
+257-10clang/test/CXX/temp/temp.decls/temp.friend/p5.cpp
+131-90clang/lib/Sema/SemaDeclCXX.cpp
+137-58clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
+24-101clang/include/clang/AST/DeclFriend.h
+92-18clang/lib/AST/ASTImporter.cpp
+1,299-38235 files not shown
+1,822-59241 files

LLVM/project eb4690cflang/include/flang/Evaluate tools.h, flang/lib/Evaluate tools.cpp

[flang][Lower] Add alternative real expression lowering (#207371)

This is opt-in by an engineering option and disabled by default.

In section 10.1.5.2.4 of the 2023 Fortran standard "Evaluation of
numerical intrinsic operations", the standard explicitly allows
alternate mathematically equivalent lowerings. For example the source
expression X + Y + Z could be evaluated (X + Y) + Z, X + (Y + Z) or even
(X + Z) + Y, etc.

The open source benchmark SNBone shows significantly better results with
classic flang because classic flang emits real arithmetic expressions in
a different order. In the case of this benchmark it reduces dependency
depth for instructions issued to the vector unit, allowing for more of
the arithmetic to be parallelised over multiple vector execution units
in the ALU.

The lowering added by this patch tries to mimic the way classic flang
orders instructions for these expressions. I did not read any classic

    [32 lines not shown]
DeltaFile
+748-0flang/test/Lower/split-sum-expression-tree-lowering.f90
+148-0flang/lib/Evaluate/tools.cpp
+21-0flang/include/flang/Evaluate/tools.h
+16-1flang/lib/Lower/Bridge.cpp
+1-0flang/lib/Lower/ConvertExprToHLFIR.cpp
+934-15 files

LLVM/project e1f7b53lld/COFF Driver.cpp, lld/test/COFF arm64x-hybridobj.s

[LLD][COFF] Add support for multi-arch ARM64X object files (#207868)
DeltaFile
+98-0lld/test/COFF/arm64x-hybridobj.s
+12-0lld/COFF/Driver.cpp
+110-02 files

NetBSD/pkgsrc lhPLJvqgraphics/libjpeg-turbo Makefile distinfo, graphics/libjpeg-turbo/patches patch-cmakescripts_BuildPackages.cmake patch-release_Config.cmake.in

   libjpeg-turbo: fix config scripts for ZLIB; bump revision
VersionDeltaFile
1.1+19-0graphics/libjpeg-turbo/patches/patch-cmakescripts_BuildPackages.cmake
1.1+15-0graphics/libjpeg-turbo/patches/patch-release_Config.cmake.in
1.47+2-2graphics/libjpeg-turbo/Makefile
1.40+3-1graphics/libjpeg-turbo/distinfo
+39-34 files

OPNSense/core 1eaefb6src/opnsense/scripts/firmware read.sh config.sh

firmware: cleansing using output_cmd is futile

Move the code back to where it was in early 26.1.  A number of
regressions could have been avoided.  The last straw was buffering
of "." characters for fetching.

The read-guard is still effective.  As it reads the file it does
not need to run unbuffered.  GUI reads are still properly filtered.
DeltaFile
+1-5src/opnsense/scripts/firmware/read.sh
+2-3src/opnsense/scripts/firmware/config.sh
+3-82 files

LLVM/project 9ab13dcmlir/lib/Conversion/ComplexToSPIRV ComplexToSPIRV.cpp, mlir/test/Conversion/ComplexToSPIRV complex-to-spirv.mlir

[mlir][ComplexToSPIRV] Add lowering for complex.eq and complex.neq (#206279)
DeltaFile
+40-0mlir/test/Conversion/ComplexToSPIRV/complex-to-spirv.mlir
+34-0mlir/lib/Conversion/ComplexToSPIRV/ComplexToSPIRV.cpp
+74-02 files

LLVM/project 17b27e7llvm/lib/Target/AArch64 AArch64TargetTransformInfo.cpp AArch64Processors.td, llvm/test/Analysis/CostModel/AArch64 mul.ll

[AArch64] Increase the relative cost of vector i64 multiply on Neoverse V3ae. (#207723)

The throughput of vector nxv2i64 multiplies on neoverse v3ae is 1/2, compared
to the throughput of 2 for integer multiplies. This large difference can mean
it is more profitable than normal to use scalar loops as opposed to vectorization.

This adds a subtarget feature that increases the cost multiple by 4 for 64bit
vector multiplies for specific CPUs. The cost model of llvm does not mean that
we can model throughputs correctly, but this should help. The same feature is
added to N2 as it has a similar difference between vector and scalar multiply
cost throughputs.
DeltaFile
+81-34llvm/test/Analysis/CostModel/AArch64/mul.ll
+12-3llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
+4-2llvm/lib/Target/AArch64/AArch64Processors.td
+5-0llvm/lib/Target/AArch64/AArch64Features.td
+102-394 files

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

[VPlan] Forbid CSE'ing writes (NFC) (#207443)

CSE'ing two identical writes does not consider the fact that there could
be another write that writes an aliasing memory location. Fix the
potential miscompile. Note that there is currently no miscompile, as we
never remove a write, but the patch has the benefit of not processing
writes unnecessarily.
DeltaFile
+2-4llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+2-41 files

LLVM/project 9b2d699clang/include/clang/Basic DiagnosticSemaKinds.td, clang/lib/Sema SemaAMDGPU.cpp SemaDeclCXX.cpp

Update implementation
DeltaFile
+19-13clang/test/SemaCXX/amdgpu-barrier.cpp
+19-13clang/test/SemaHIP/amdgpu-barrier.hip
+12-13clang/lib/Sema/SemaAMDGPU.cpp
+7-8clang/include/clang/Basic/DiagnosticSemaKinds.td
+13-0clang/lib/Sema/SemaDeclCXX.cpp
+9-1clang/test/CodeGenHIP/amdgpu-barrier-type.hip
+79-482 files not shown
+82-518 files

LLVM/project f37d895llvm/lib/Target/AArch64 AArch64SchedC1Nano.td, llvm/test/CodeGen/AArch64 shuffle-tbl34.ll

rebase

Created using spr 1.3.8-wip
DeltaFile
+20,241-21,265llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+5,013-5,520llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+1,371-1,626llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.320bit.ll
+1,268-939llvm/lib/Target/AArch64/AArch64SchedC1Nano.td
+635-973llvm/test/CodeGen/AMDGPU/bf16.ll
+735-454llvm/test/CodeGen/AArch64/shuffle-tbl34.ll
+29,263-30,7771,409 files not shown
+67,110-53,2481,415 files

LLVM/project 5f8b466llvm/lib/Target/AArch64 AArch64SchedC1Nano.td, llvm/test/CodeGen/AArch64 shuffle-tbl34.ll

[spr] changes introduced through rebase

Created using spr 1.3.8-wip

[skip ci]
DeltaFile
+20,241-21,265llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+5,013-5,520llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+1,371-1,626llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.320bit.ll
+1,268-939llvm/lib/Target/AArch64/AArch64SchedC1Nano.td
+635-973llvm/test/CodeGen/AMDGPU/bf16.ll
+735-454llvm/test/CodeGen/AArch64/shuffle-tbl34.ll
+29,263-30,7771,409 files not shown
+67,110-53,2481,415 files

LLVM/project 74e44e4llvm/test/tools/llvm-ar arm64x-hybridobj.yaml, llvm/test/tools/llvm-lib arm64x-hybridobj.yaml

[llvm-readobj][llvm-ar][COFF] Use exclude for .obj.arm64ec section in tests (NFC) (#208116)

For consistency with #207612.
DeltaFile
+3-4llvm/test/tools/llvm-readobj/COFF/arm64x-hybridobj.yaml
+1-1llvm/test/tools/llvm-ar/arm64x-hybridobj.yaml
+1-1llvm/test/tools/llvm-lib/arm64x-hybridobj.yaml
+5-63 files

LLVM/project 2955351llvm/lib/Target/RISCV RISCVISelLowering.cpp RISCVInstrInfoP.td, llvm/test/CodeGen/RISCV rvp-reverse.ll

[RISCV][P-ext] Improve codegen for packed reverse intrinsics (#207575)

This patch improves the codegen for vector reverse for RVP.
DeltaFile
+14-54llvm/test/CodeGen/RISCV/rvp-reverse.ll
+50-0llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+11-0llvm/lib/Target/RISCV/RISCVInstrInfoP.td
+75-543 files

LLVM/project 475cef6llvm/lib/CodeGen/SelectionDAG TargetLowering.cpp, llvm/test/CodeGen/AMDGPU amdgcn.bitcast.1024bit.ll amdgcn.bitcast.512bit.ll

[SelectionDAG][AMDGPU] Preserve known bits for demoted sret pointers (#203468)

AMDGPU marks sret pointers with high-zero known bits so stores can be
folded into MUBUF base+offset addressing. Explicit sret arguments keep
this information through an AssertZext, but implicit sret lowering
passes the hidden return pointer through `DemoteRegister` as a
`CopyToReg/CopyFromReg` pair, where the fact is not visible to
SelectionDAG known-bits queries.

Add a `TargetLowering` hook for sret pointer known bits and use a shared
helper to materialize those bits as an `AssertZext` for both explicit
and demoted sret pointers.


Validated with llvm-test-depends, the AMDGPU function-returns test, and
the full llvm/test/CodeGen suite.

Assisted-by: Codex


    [2 lines not shown]
DeltaFile
+17,697-18,587llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+4,011-4,454llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+823-1,034llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.320bit.ll
+635-973llvm/test/CodeGen/AMDGPU/bf16.ll
+200-401llvm/test/CodeGen/AMDGPU/function-returns.ll
+25-3llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+23,391-25,4526 files not shown
+23,421-25,48012 files

LLVM/project 3fc15b5llvm/lib/Analysis HashRecognize.cpp, llvm/test/Analysis/HashRecognize cyclic-redundancy-check.ll

[HashRecognize] Make `LHSAux` null if it is dead (#207231)

HashRecognize detects big-endian CRC loops with auxiliary data where the
bitwidth of `LHS` exceeds that of `LHSAux`. However, in this case,
`LHSAux` is zero-extended for the most significant bit check in each
iteration, and as such is effectively dead. Later optimization may even
miscompile in this case: for example, in the included
`crc16.be.tc8.zext.data` and `crc16.be.tc8.misalign` test cases,
`optimizeCRCLoop` emits `lshr i8 %crc.data.indexer, 8`, thereby creating
poison.

Since `LHSAux` is dead in this case, the user should receive a null
`LHSAux` instead.
DeltaFile
+92-2llvm/test/Transforms/LoopIdiom/cyclic-redundancy-check.ll
+46-1llvm/test/Analysis/HashRecognize/cyclic-redundancy-check.ll
+12-1llvm/lib/Analysis/HashRecognize.cpp
+150-43 files

LLVM/project 787dfd1llvm/lib/CodeGen/SelectionDAG SelectionDAGISel.cpp

[spr] initial version

Created using spr 1.3.8-wip
DeltaFile
+0-1llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
+0-11 files