[llvm] [VPlan] Build initial VPlan 0 using HCFGBuilder for inner loops. (NFC) (PR #124432)
Mikael Holmén via llvm-commits
llvm-commits at lists.llvm.org
Wed Feb 19 22:35:09 PST 2025
mikaelholmen wrote:
> > @mikaelholmen it should be fixed in [a96444a](https://github.com/llvm/llvm-project/commit/a96444af440a309592fe1043885a51ac0a5fb125). The assertion was over-eager and the related code actually unused.
>
> Yep, thanks!
@fhahn: Hm, seems like I was too quick there with my verification :/
After the a96444af44 fix
```opt -passes=loop-vectorize bbi-104312.ll -o /dev/null```
crashes like this instead?
```
opt: ../lib/Transforms/Vectorize/VPlanHCFGBuilder.cpp:445: void (anonymous namespace)::PlainCFGBuilder::buildPlainCFG(DenseMap<VPBlockBase *, BasicBlock *> &): Assertion `IRDef2VPValue.contains(BI->getCondition()) && "Missing condition bit in IRDef2VPValue!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: build-all/bin/opt -passes=loop-vectorize bbi-104312.ll -o /dev/null
1. Running pass "function(loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>)" on module "bbi-104312.ll"
2. Running pass "loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>" on function "main"
#0 0x00005583f8bc71a6 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (build-all/bin/opt+0x464e1a6)
#1 0x00005583f8bc4bee llvm::sys::RunSignalHandlers() (build-all/bin/opt+0x464bbee)
#2 0x00005583f8bc7a29 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#3 0x00007f49ef09bd10 __restore_rt (/lib64/libpthread.so.0+0x12d10)
#4 0x00007f49eca3b52f raise (/lib64/libc.so.6+0x4e52f)
#5 0x00007f49eca0ee65 abort (/lib64/libc.so.6+0x21e65)
#6 0x00007f49eca0ed39 _nl_load_domain.cold.0 (/lib64/libc.so.6+0x21d39)
#7 0x00007f49eca33e86 (/lib64/libc.so.6+0x46e86)
#8 0x00005583fa23e345 (anonymous namespace)::PlainCFGBuilder::buildPlainCFG(llvm::DenseMap<llvm::VPBlockBase*, llvm::BasicBlock*, llvm::DenseMapInfo<llvm::VPBlockBase*, void>, llvm::detail::DenseMapPair<llvm::VPBlockBase*, llvm::BasicBlock*>>&) VPlanHCFGBuilder.cpp:0:0
#9 0x00005583fa23b62d llvm::VPlanHCFGBuilder::buildPlainCFG() (build-all/bin/opt+0x5cc262d)
#10 0x00005583fa23e8af llvm::VPlanHCFGBuilder::buildHierarchicalCFG() (build-all/bin/opt+0x5cc58af)
#11 0x00005583fa18f5a1 llvm::LoopVectorizationPlanner::tryToBuildVPlanWithVPRecipes(llvm::VFRange&) (build-all/bin/opt+0x5c165a1)
#12 0x00005583fa181813 llvm::LoopVectorizationPlanner::buildVPlansWithVPRecipes(llvm::ElementCount, llvm::ElementCount) (build-all/bin/opt+0x5c08813)
#13 0x00005583fa1812e0 llvm::LoopVectorizationPlanner::plan(llvm::ElementCount, unsigned int) (build-all/bin/opt+0x5c082e0)
#14 0x00005583fa199636 llvm::LoopVectorizePass::processLoop(llvm::Loop*) (build-all/bin/opt+0x5c20636)
#15 0x00005583fa1a074b llvm::LoopVectorizePass::runImpl(llvm::Function&) (build-all/bin/opt+0x5c2774b)
#16 0x00005583fa1a1006 llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x5c28006)
#17 0x00005583fa04adad llvm::detail::PassModel<llvm::Function, llvm::LoopVectorizePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) PassBuilderPipelines.cpp:0:0
#18 0x00005583f8de9567 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x4870567)
#19 0x00005583fa04398d llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) PassBuilderPipelines.cpp:0:0
#20 0x00005583f8dee13e llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0x487513e)
#21 0x00005583fa03a07d llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) PassBuilderPipelines.cpp:0:0
#22 0x00005583f8de8257 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0x486f257)
#23 0x00005583f9fc53ec 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) (build-all/bin/opt+0x5a4c3ec)
#24 0x00005583f8b89d92 optMain (build-all/bin/opt+0x4610d92)
#25 0x00007f49eca277e5 __libc_start_main (/lib64/libc.so.6+0x3a7e5)
#26 0x00005583f8b879ae _start (build-all/bin/opt+0x460e9ae)
Abort (core dumped)
```
Tried this both on a96444af440 and latest trunk 8b58cb853a3.
https://github.com/llvm/llvm-project/pull/124432
More information about the llvm-commits
mailing list