| Issue |
184372
|
| Summary |
[LV] Crash on `llvm-test-suite` with `-force-vector-interleave=(n>=2)`
|
| Labels |
vectorizers,
crash-on-valid
|
| Assignees |
|
| Reporter |
MacDue
|
Note: This is almost identical to #184317, the fix in #184329 only fixed the reduction. I've attached a new reduced test case and the full compile unit now.
Reduced test case:
```llvm
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32"
target triple = "aarch64-unknown-linux-gnu"
define void @create_hierarchy(ptr %0, ptr %1, i64 %indvars.iv218) {
entry:
br label %for.body
for.body: ; preds = %for.inc, %entry
%indvars.iv2182 = phi i64 [ 0, %entry ], [ %indvars.iv.next219, %for.inc ]
store i32 0, ptr %1, align 4
br i1 false, label %if.then4, label %if.else
if.then4: ; preds = %for.body
%2 = load i32, ptr %0, align 8
br label %for.inc
if.else: ; preds = %for.body
%3 = load i32, ptr %0, align 8
br label %for.inc
for.inc: ; preds = %if.else, %if.then4
%cond.i.sink = phi i32 [ 0, %if.then4 ], [ %3, %if.else ]
store i32 %cond.i.sink, ptr null, align 4
%indvars.iv.next219 = add i64 %indvars.iv2182, 1
%exitcond226.not = icmp eq i64 %indvars.iv2182, %indvars.iv218
br i1 %exitcond226.not, label %for.end, label %for.body
for.end: ; preds = %for.inc
ret void
}
```
Full compile unit: [full_tu.ll.txt](https://github.com/user-attachments/files/25721359/full_tu.ll.txt)
Run with: `opt reduced.ll -o - -passes=loop-vectorize -S -force-vector-interleave=2`
<details>
<summary>Stack trace</summary>
opt: /home/benmax01/git/llvm-project/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp:3307: virtual void llvm::VPReplicateRecipe::execute(VPTransformState &): Assertion `IsSingleScalar && "VPReplicateRecipes outside replicate regions " "must have already been unrolled"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and instructions to reproduce the bug.
Stack dump:
0. Program arguments: ./build/bin/opt foo.ll -o - -passes=loop-vectorize -S -force-vector-interleave=2
1. Running pass "function(loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>)" on module "foo.ll"
2. Running pass "loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>" on function "create_hierarchy"
#0 0x0000f7c67c34db98 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/benmax01/git/llvm-project/llvm/lib/Support/Unix/Signals.inc:880:11
#1 0x0000f7c67c34e0ac PrintStackTraceSignalHandler(void*) /home/benmax01/git/llvm-project/llvm/lib/Support/Unix/Signals.inc:962:1
#2 0x0000f7c67c34c0c8 llvm::sys::RunSignalHandlers() /home/benmax01/git/llvm-project/llvm/lib/Support/Signals.cpp:108:5
#3 0x0000f7c67c34e978 SignalHandler(int, siginfo_t*, void*) /home/benmax01/git/llvm-project/llvm/lib/Support/Unix/Signals.inc:448:38
#4 0x0000f7c685f48a60 (linux-vdso.so.1+0xa60)
#5 0x0000f7c67b997608 __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#6 0x0000f7c67b94cb3c raise ./signal/../sysdeps/posix/raise.c:27:6
#7 0x0000f7c67b937e00 abort ./stdlib/abort.c:81:7
#8 0x0000f7c67b945cc0 __assert_fail_base ./assert/assert.c:93:7
#9 0x0000f7c67b945d30 __assert_perror_fail ./assert/assert-perr.c:31:1
#10 0x0000f7c68213fbe0 llvm::VPReplicateRecipe::execute(llvm::VPTransformState&) /home/benmax01/git/llvm-project/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp:3308:26
#11 0x0000f7c6820afa78 llvm::VPBasicBlock::executeRecipes(llvm::VPTransformState*, llvm::BasicBlock*) /home/benmax01/git/llvm-project/llvm/lib/Transforms/Vectorize/VPlan.cpp:557:3
#12 0x0000f7c6820afdb4 llvm::VPBasicBlock::execute(llvm::VPTransformState*) /home/benmax01/git/llvm-project/llvm/lib/Transforms/Vectorize/VPlan.cpp:537:3
#13 0x0000f7c6820b2ad8 llvm::VPlan::execute(llvm::VPTransformState*) /home/benmax01/git/llvm-project/llvm/lib/Transforms/Vectorize/VPlan.cpp:960:3
#14 0x0000f7c681cc310c llvm::LoopVectorizationPlanner::executePlan(llvm::ElementCount, unsigned int, llvm::VPlan&, llvm::InnerLoopVectorizer&, llvm::DominatorTree*, bool) /home/benmax01/git/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:7536:13
#15 0x0000f7c681ccaedc llvm::LoopVectorizePass::processLoop(llvm::Loop*) /home/benmax01/git/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:9869:9
#16 0x0000f7c681ccee90 llvm::LoopVectorizePass::runImpl(llvm::Function&) /home/benmax01/git/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:9922:30
#17 0x0000f7c681ccf1f8 llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /home/benmax01/git/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:9960:32
#18 0x0000f7c6839dc6d4 llvm::detail::PassModel<llvm::Function, llvm::LoopVectorizePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /home/benmax01/git/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:91:5
#19 0x0000f7c67cf9f4e0 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /home/benmax01/git/llvm-project/llvm/include/llvm/IR/PassManagerImpl.h:76:38
#20 0x0000f7c6848dc4b0 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/benmax01/git/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:91:5
#21 0x0000f7c67cf9e0d0 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/benmax01/git/llvm-project/llvm/lib/IR/PassManager.cpp:127:38
#22 0x0000f7c685eb2c30 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/benmax01/git/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:91:5
#23 0x0000f7c67cf9e678 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/benmax01/git/llvm-project/llvm/include/llvm/IR/PassManagerImpl.h:76:38
#24 0x0000f7c685e81484 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/benmax01/git/llvm-project/llvm/tools/opt/NewPMDriver.cpp:574:7
#25 0x0000f7c685eb5d70 optMain /home/benmax01/git/llvm-project/llvm/tools/opt/optdriver.cpp:751:9
#26 0x0000c0c5343b0de4 main /home/benmax01/git/llvm-project/llvm/tools/opt/opt.cpp:27:35
#27 0x0000f7c67b9384c4 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#28 0x0000f7c67b938598 call_init ./csu/../csu/libc-start.c:128:20
#29 0x0000f7c67b938598 __libc_start_main ./csu/../csu/libc-start.c:347:5
#30 0x0000c0c5343b0cb0 _start (./build/bin/opt+0x10cb0)
[1] 269250 abort (core dumped) ./build/bin/opt foo.ll -o - -passes=loop-vectorize -S
</details>
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs