[llvm] [VPlan] Verify dominance for incoming values of phi-like recipes. (PR #124838)
Vladimir Vereschaka via llvm-commits
llvm-commits at lists.llvm.org
Fri May 16 18:10:16 PDT 2025
vvereschaka wrote:
@fhahn ,
these changes cause a crash for the following tests on the expensive check builders such as [llvm-clang-x86_64-expensive-checks-ubuntu](https://lab.llvm.org/buildbot/#/builders/187):
* first-order-recurrence.ll
* pointer_iv.ll
* pr48340.ll
more details here https://lab.llvm.org/buildbot/#/builders/187/builds/5956
```
/home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/build/bin/opt -passes=loop-vectorize --force-vector-width=4 --force-vector-interleave=0 -S -o - < /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/test/Transforms/LoopVectorize/X86/pr48340.ll | /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/build/bin/FileCheck /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/test/Transforms/LoopVectorize/X86/pr48340.ll # RUN: at line 2
+ /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/build/bin/opt -passes=loop-vectorize --force-vector-width=4 --force-vector-interleave=0 -S -o -
+ /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/build/bin/FileCheck /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/test/Transforms/LoopVectorize/X86/pr48340.ll
opt: /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/lib/Transforms/Vectorize/VPlan.cpp:787: const llvm::VPBasicBlock* llvm::VPBasicBlock::getCFGPredecessor(unsigned int) const: Assertion `Idx < 2 && Region->getNumPredecessors() == 1 && "loop region has a single predecessor (preheader), its entry block " "has 2 incoming blocks"' 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/buildbot/worker/as-builder-4/ramdisk/expensive-checks/build/bin/opt -passes=loop-vectorize --force-vector-width=4 --force-vector-interleave=0 -S -o -
1. Running pass "function(loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>)" on module "<stdin>"
2. Running pass "loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>" on function "foo"
#0 0x00005581969b7064 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/lib/Support/Unix/Signals.inc:804:22
#1 0x00005581969b74f7 PrintStackTraceSignalHandler(void*) /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/lib/Support/Unix/Signals.inc:888:1
#2 0x00005581969b48b3 llvm::sys::RunSignalHandlers() /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/lib/Support/Signals.cpp:105:20
#3 0x00005581969b68d3 SignalHandler(int, siginfo_t*, void*) /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/lib/Support/Unix/Signals.inc:418:13
#4 0x00007fc006abf520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#5 0x00007fc006b139fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#6 0x00007fc006abf476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#7 0x00007fc006aa57f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#8 0x00007fc006aa571b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#9 0x00007fc006ab6e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#10 0x0000558193c88f1b llvm::VPBasicBlock::getCFGPredecessor(unsigned int) const /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/lib/Transforms/Vectorize/VPlan.cpp:793:21
#11 0x00005581939f1a4c llvm::VPPhiAccessors::getIncomingBlock(unsigned int) const /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/lib/Transforms/Vectorize/VPlan.h:3487:1
#12 0x0000558193d3a979 (anonymous namespace)::VPlanVerifier::verifyVPBasicBlock(llvm::VPBasicBlock const*) /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/lib/Transforms/Vectorize/VPlanVerifier.cpp:228:69
#13 0x0000558193d3b32c (anonymous namespace)::VPlanVerifier::verifyBlock(llvm::VPBlockBase const*) /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/lib/Transforms/Vectorize/VPlanVerifier.cpp:362:16
#14 0x0000558193d3b452 (anonymous namespace)::VPlanVerifier::verifyBlocksInRegion(llvm::VPRegionBlock const*) /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/lib/Transforms/Vectorize/VPlanVerifier.cpp:373:9
#15 0x0000558193d3b5cf (anonymous namespace)::VPlanVerifier::verifyRegion(llvm::VPRegionBlock const*) /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/lib/Transforms/Vectorize/VPlanVerifier.cpp:393:37
#16 0x0000558193d3b670 (anonymous namespace)::VPlanVerifier::verifyRegionRec(llvm::VPRegionBlock const*) /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/lib/Transforms/Vectorize/VPlanVerifier.cpp:398:31
#17 0x0000558193d3b7e2 (anonymous namespace)::VPlanVerifier::verify(llvm::VPlan const&) /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/lib/Transforms/Vectorize/VPlanVerifier.cpp:412:7
#18 0x0000558193d3baf2 llvm::verifyVPlanIsValid(llvm::VPlan const&) /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/lib/Transforms/Vectorize/VPlanVerifier.cpp:461:25
#19 0x0000558193a0ae3d void llvm::VPlanTransforms::runPass<unsigned int, llvm::LLVMContext&>(void (*)(llvm::VPlan&, unsigned int, llvm::LLVMContext&), llvm::VPlan&, std::remove_reference<unsigned int>::type&, std::remove_reference<llvm::LLVMContext&>::type&) /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/lib/Transforms/Vectorize/VPlanTransforms.h:54:3
#20 0x00005581939c5c1f llvm::LoopVectorizationPlanner::executePlan(llvm::ElementCount, unsigned int, llvm::VPlan&, llvm::InnerLoopVectorizer&, llvm::DominatorTree*, bool) /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:7796:27
#21 0x00005581939d7f2c llvm::LoopVectorizePass::processLoop(llvm::Loop*) /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:10980:24
#22 0x00005581939d859a llvm::LoopVectorizePass::runImpl(llvm::Function&) /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:11059:27
#23 0x00005581939d88e7 llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:11096:39
#24 0x0000558192f7e657 llvm::detail::PassModel<llvm::Function, llvm::LoopVectorizePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:92:3
#25 0x00005581966d27ad llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/include/llvm/IR/PassManagerImpl.h:85:18
#26 0x0000558190a78fab 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/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:92:3
#27 0x00005581966d1682 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/lib/IR/PassManager.cpp:129:23
#28 0x0000558190a78d25 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:92:3
#29 0x00005581966d23d9 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/include/llvm/IR/PassManagerImpl.h:85:18
#30 0x00005581901732f9 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) /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/tools/opt/NewPMDriver.cpp:557:10
#31 0x00005581901437eb optMain /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/tools/opt/optdriver.cpp:729:27
#32 0x0000558190141001 main /home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/llvm-project/llvm/tools/opt/opt.cpp:25:64
#33 0x00007fc006aa6d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#34 0x00007fc006aa6e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#35 0x0000558190140ee5 _start (/home/buildbot/worker/as-builder-4/ramdisk/expensive-checks/build/bin/opt+0xfdeee5)
FileCheck error: '<stdin>' is empty.
```
would you fix the problem as soon as it possible or revert these changes
https://github.com/llvm/llvm-project/pull/124838
More information about the llvm-commits
mailing list