[PATCH] D138238: [SROA] For non-speculatable `load`s of `select`s -- split block, insert then/else blocks, form two-entry PHI node

Roman Lebedev via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Dec 2 13:17:50 PST 2022


lebedev.ri updated this revision to Diff 479727.
lebedev.ri added a comment.

Add a few more tests (non-simple loads, select-of-select).
mem2reg bails on volatile (but not atomic!) loads,
so we shouldn't form predicated loads for them.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D138238/new/

https://reviews.llvm.org/D138238

Files:
  llvm/include/llvm/Transforms/Scalar.h
  llvm/include/llvm/Transforms/Scalar/SROA.h
  llvm/include/llvm/Transforms/Utils/BasicBlockUtils.h
  llvm/lib/Passes/PassBuilder.cpp
  llvm/lib/Passes/PassBuilderPipelines.cpp
  llvm/lib/Passes/PassRegistry.def
  llvm/lib/Transforms/Scalar/SROA.cpp
  llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
  llvm/test/Analysis/MemorySSA/pr39197.ll
  llvm/test/CodeGen/AMDGPU/unroll.ll
  llvm/test/CodeGen/AMDGPU/vector-alloca-addrspacecast.ll
  llvm/test/CodeGen/AMDGPU/vector-alloca-atomic.ll
  llvm/test/CodeGen/AMDGPU/vector-alloca-bitcast.ll
  llvm/test/CodeGen/AMDGPU/vector-alloca-limits.ll
  llvm/test/CodeGen/AMDGPU/vector-alloca.ll
  llvm/test/CodeGen/PowerPC/P10-stack-alignment.ll
  llvm/test/CodeGen/X86/vec_ins_extract.ll
  llvm/test/DebugInfo/ARM/sroa-complex.ll
  llvm/test/DebugInfo/Generic/sroa-larger.ll
  llvm/test/DebugInfo/Generic/sroa-samesize.ll
  llvm/test/DebugInfo/X86/sroa-after-inlining.ll
  llvm/test/DebugInfo/X86/sroasplit-1.ll
  llvm/test/DebugInfo/X86/sroasplit-2.ll
  llvm/test/DebugInfo/X86/sroasplit-3.ll
  llvm/test/DebugInfo/X86/sroasplit-4.ll
  llvm/test/DebugInfo/X86/sroasplit-5.ll
  llvm/test/DebugInfo/X86/sroasplit-dbg-declare.ll
  llvm/test/DebugInfo/debugify-each.ll
  llvm/test/DebugInfo/salvage-overflow.ll
  llvm/test/Transforms/ADCE/2016-09-06.ll
  llvm/test/Transforms/AddDiscriminators/memcpy-discriminator.ll
  llvm/test/Transforms/ArgumentPromotion/inalloca.ll
  llvm/test/Transforms/Coroutines/coro-debug-O2.ll
  llvm/test/Transforms/Inline/basictest.ll
  llvm/test/Transforms/Inline/cgscc-cycle.ll
  llvm/test/Transforms/Inline/crash2.ll
  llvm/test/Transforms/Inline/devirtualize-4.ll
  llvm/test/Transforms/InstCombine/2009-02-20-InstCombine-SROA.ll
  llvm/test/Transforms/LICM/volatile-alias.ll
  llvm/test/Transforms/LoopSimplify/2004-04-13-LoopSimplifyUpdateDomFrontier.ll
  llvm/test/Transforms/SROA/2009-02-20-InstCombine-SROA.ll
  llvm/test/Transforms/SROA/address-spaces.ll
  llvm/test/Transforms/SROA/addrspacecast.ll
  llvm/test/Transforms/SROA/alignment.ll
  llvm/test/Transforms/SROA/alloca-address-space.ll
  llvm/test/Transforms/SROA/assume.ll
  llvm/test/Transforms/SROA/basictest.ll
  llvm/test/Transforms/SROA/big-endian.ll
  llvm/test/Transforms/SROA/dbg-addr-diamond.ll
  llvm/test/Transforms/SROA/dbg-inline.ll
  llvm/test/Transforms/SROA/dbg-single-piece.ll
  llvm/test/Transforms/SROA/dead-inst.ll
  llvm/test/Transforms/SROA/fca.ll
  llvm/test/Transforms/SROA/ignore-droppable.ll
  llvm/test/Transforms/SROA/invariant-group.ll
  llvm/test/Transforms/SROA/irregular-type.ll
  llvm/test/Transforms/SROA/lifetime-intrinsic.ll
  llvm/test/Transforms/SROA/mem-par-metadata-sroa-cast.ll
  llvm/test/Transforms/SROA/mem-par-metadata-sroa.ll
  llvm/test/Transforms/SROA/non-capturing-call-readonly.ll
  llvm/test/Transforms/SROA/non-integral-pointers.ll
  llvm/test/Transforms/SROA/phi-and-select.ll
  llvm/test/Transforms/SROA/phi-catchswitch.ll
  llvm/test/Transforms/SROA/phi-gep.ll
  llvm/test/Transforms/SROA/phi-speculate-different-load-types.ll
  llvm/test/Transforms/SROA/phi-with-duplicate-pred.ll
  llvm/test/Transforms/SROA/pointer-offset-size.ll
  llvm/test/Transforms/SROA/ppcf128-no-fold.ll
  llvm/test/Transforms/SROA/pr26972.ll
  llvm/test/Transforms/SROA/pr37267.ll
  llvm/test/Transforms/SROA/preserve-nonnull.ll
  llvm/test/Transforms/SROA/scalable-vectors.ll
  llvm/test/Transforms/SROA/select-gep.ll
  llvm/test/Transforms/SROA/select-load.ll
  llvm/test/Transforms/SROA/slice-order-independence.ll
  llvm/test/Transforms/SROA/slice-width.ll
  llvm/test/Transforms/SROA/sroa-common-type-fail-promotion.ll
  llvm/test/Transforms/SROA/std-clamp.ll
  llvm/test/Transforms/SROA/tbaa-struct.ll
  llvm/test/Transforms/SROA/tbaa-struct2.ll
  llvm/test/Transforms/SROA/tbaa-subload.ll
  llvm/test/Transforms/SROA/vector-conversion.ll
  llvm/test/Transforms/SROA/vector-lifetime-intrinsic.ll
  llvm/test/Transforms/SROA/vector-promotion-different-size.ll
  llvm/test/Transforms/SROA/vector-promotion.ll
  llvm/test/Transforms/SROA/vectors-of-pointers.ll
  llvm/test/Transforms/SimpleLoopUnswitch/2011-09-26-EHCrash.ll
  llvm/test/Transforms/Util/dbg-user-of-aext.ll
  llvm/tools/llvm-reduce/deltas/RunIRPasses.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D138238.479727.patch
Type: text/x-patch
Size: 133597 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221202/1c0d4461/attachment-0001.bin>


More information about the llvm-commits mailing list