[llvm] [SROA] Use tree-structure merge to remove alloca (PR #152793)

Yingwei Zheng via llvm-commits llvm-commits at lists.llvm.org
Sat Aug 16 05:06:12 PDT 2025


dtcxzyw wrote:

> ******************** TEST 'LLVM :: Transforms/SROA/vector-conversion.ll' FAILED ********************
Exit Code: 2

Command Output (stderr):
--
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/SROA/vector-conversion.ll -passes='sroa<preserve-cfg>' -S | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/SROA/vector-conversion.ll --check-prefixes=CHECK,CHECK-PRESERVE-CFG # RUN: at line 2
+ /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt '-passes=sroa<preserve-cfg>' -S
+ /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/SROA/vector-conversion.ll --check-prefixes=CHECK,CHECK-PRESERVE-CFG
opt: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/lib/IR/Instructions.cpp:3041: static CastInst *llvm::CastInst::Create(Instruction::CastOps, Value *, Type *, const Twine &, InsertPosition): Assertion `castIsValid(op, S, Ty) && "Invalid cast!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.	Program arguments: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -passes=sroa<preserve-cfg> -S
1.	Running pass "function(sroa<preserve-cfg>)" on module "<stdin>"
2.	Running pass "sroa<preserve-cfg>" on function "vector_ptrtoint"
 #0 0x000058dd565d5cc8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/lib/Support/Unix/Signals.inc:834:13
 #1 0x000058dd565d32d5 llvm::sys::RunSignalHandlers() /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/lib/Support/Signals.cpp:105:18
 #2 0x000058dd565d6ad1 SignalHandler(int, siginfo_t*, void*) /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/lib/Support/Unix/Signals.inc:426:38
 #3 0x00007bd547646330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
 #4 0x00007bd54769fb2c pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x9eb2c)
 #5 0x00007bd54764627e raise (/lib/x86_64-linux-gnu/libc.so.6+0x4527e)
 #6 0x00007bd5476298ff abort (/lib/x86_64-linux-gnu/libc.so.6+0x288ff)
 #7 0x00007bd54762981b (/lib/x86_64-linux-gnu/libc.so.6+0x2881b)
 #8 0x00007bd54763c517 (/lib/x86_64-linux-gnu/libc.so.6+0x3b517)
 #9 0x000058dd56714883 llvm::CastInst::Create(llvm::Instruction::CastOps, llvm::Value*, llvm::Type*, llvm::Twine const&, llvm::InsertPosition) /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/lib/IR/Instructions.cpp:3061:5
#10 0x000058dd5680a1f5 doit /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/include/llvm/Support/Casting.h:109:5
#11 0x000058dd5680a1f5 doit /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/include/llvm/Support/Casting.h:137:12
#12 0x000058dd5680a1f5 doit /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/include/llvm/Support/Casting.h:127:12
#13 0x000058dd5680a1f5 isPossible /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/include/llvm/Support/Casting.h:255:12
#14 0x000058dd5680a1f5 isPossible /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/include/llvm/Support/Casting.h:509:12
#15 0x000058dd5680a1f5 isa<llvm::FPMathOperator, llvm::Instruction *> /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/include/llvm/Support/Casting.h:549:10
#16 0x000058dd5680a1f5 llvm::IRBuilderBase::CreateCast(llvm::Instruction::CastOps, llvm::Value*, llvm::Type*, llvm::Twine const&, llvm::MDNode*, llvm::FMFSource) /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/include/llvm/IR/IRBuilder.h:2246:9
#17 0x000058dd570dca97 mergeTwoVectors(llvm::Value*, llvm::Value*, llvm::DataLayout const&, llvm::Type*, llvm::IRBuilder<llvm::ConstantFolder, llvm::IRBuilderDefaultInserter>&)::$_0::operator()(llvm::Value*&, llvm::FixedVectorType*&, char const*) const /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/lib/Transforms/Scalar/SROA.cpp:2719:9
#18 0x000058dd570d62a3 mergeTwoVectors /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/lib/Transforms/Scalar/SROA.cpp:2726:3
#19 0x000058dd570d62a3 rewriteTreeStructuredMerge /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/lib/Transforms/Scalar/SROA.cpp:3084:25
#20 0x000058dd570d62a3 (anonymous namespace)::SROA::rewritePartition(llvm::AllocaInst&, (anonymous namespace)::AllocaSlices&, (anonymous namespace)::Partition&) /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/lib/Transforms/Scalar/SROA.cpp:5280:16
#21 0x000058dd570c614b (anonymous namespace)::SROA::splitAlloca(llvm::AllocaInst&, (anonymous namespace)::AllocaSlices&) /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/lib/Transforms/Scalar/SROA.cpp:5604:21
#22 0x000058dd570c291d (anonymous namespace)::SROA::runOnAlloca(llvm::AllocaInst&) /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/lib/Transforms/Scalar/SROA.cpp:0:14
#23 0x000058dd570bd61d (anonymous namespace)::SROA::runSROA(llvm::Function&) /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/lib/Transforms/Scalar/SROA.cpp:0:11
#24 0x000058dd570bd163 llvm::SROAPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/lib/Transforms/Scalar/SROA.cpp:6048:53
#25 0x000058dd57a80c1d llvm::detail::PassModel<llvm::Function, llvm::SROAPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:91:5
#26 0x000058dd5681333a llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/include/llvm/IR/PassManagerImpl.h:80:8
#27 0x000058dd57a83f4d llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:91:5
#28 0x000058dd56817c37 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/lib/IR/PassManager.cpp:132:23
#29 0x000058dd57a15e0d llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:91:5
#30 0x000058dd5681209a llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/include/llvm/IR/PassManagerImpl.h:80:8
#31 0x000058dd57a0ee54 ~SmallPtrSetImplBase /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/include/llvm/ADT/SmallPtrSet.h:89:9
#32 0x000058dd57a0ee54 ~PreservedAnalyses /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/include/llvm/IR/Analysis.h:112:7
#33 0x000058dd57a0ee54 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::ArrayRef<std::function<void (llvm::PassBuilder&)>>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool, bool) /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/tools/opt/NewPMDriver.cpp:561:3
#34 0x000058dd565ae206 optMain /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/tools/opt/optdriver.cpp:753:12
#35 0x00007bd54762b1ca (/lib/x86_64-linux-gnu/libc.so.6+0x2a1ca)
#36 0x00007bd54762b28b __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2a28b)
#37 0x000058dd565a73e5 _start (/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt+0x49193e5)
FileCheck error: '<stdin>' is empty.
FileCheck command line:  /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/SROA/vector-conversion.ll --check-prefixes=CHECK,CHECK-PRESERVE-CFG

https://github.com/llvm/llvm-project/pull/152793


More information about the llvm-commits mailing list