-
Notifications
You must be signed in to change notification settings - Fork 15.8k
Closed
Copy link
Labels
Description
Given this test case:
@src_line = external global ptr
@ref_line = external global ptr
define i32 @computeSAD(i32 %blocksize_x, ptr %byte_abs) {
entry:
br label %for.cond1
for.cond1: ; preds = %for.body3, %entry
%x4.0 = phi i32 [ 0, %entry ], [ %add29, %for.body3 ]
%cmp2 = icmp slt i32 %x4.0, %blocksize_x
br i1 %cmp2, label %for.body3, label %for.end
for.body3: ; preds = %for.cond1
%0 = load ptr, ptr @src_line, align 4
%1 = load ptr, ptr @ref_line, align 4
store ptr null, ptr %byte_abs, align 4
%incdec.ptr22 = getelementptr i8, ptr %0, i32 6
store ptr %incdec.ptr22, ptr @src_line, align 4
%incdec.ptr24 = getelementptr i8, ptr %1, i32 6
store ptr %incdec.ptr24, ptr @ref_line, align 4
%add29 = add i32 %x4.0, 1
br label %for.cond1
for.end: ; preds = %for.cond1
ret i32 0
}
We get (on HEAD):
$ ./build/rvdev/bin/clang --target=riscv32-linux-gnu -c -march=rv32gcv -O3 tc1.ll
warning: overriding the module target triple with riscv32-unknown-linux-gnu
[-Woverride-module]
EVL is used in VPInstruction with multiple users
EVL VPValue is not used correctly
clang: ../../llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:7476: DenseMap<const SCEV *, Value *> llvm::LoopVectorizationPlanner::executePlan(ElementCount, unsigned int, VPlan &, InnerLoopVectorizer &, DominatorTree *, bool): Assertion `verifyVPlanIsValid(BestVPlan, true ) && "final VPlan is invalid"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: ./build/rvdev/bin/clang --target=riscv32-linux-gnu -c -march=rv32gcv -O3 tc1.ll
1. Optimizer
2. Running pass "function<eager-inv>(drop-unnecessary-assumes,float2int,lower-constant-intrinsics,chr,loop(loop-rotate<header-duplication;no-prepare-for-lto>,loop-deletion),loop-distribute,inject-tli-mappings,loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>,drop-unnecessary-assumes,infer-alignment,loop-load-elim,instcombine<max-iterations=1;no-verify-fixpoint>,simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-arithmetic;switch-to-lookup;no-keep-loops;hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,slp-vectorizer,vector-combine,instcombine<max-iterations=1;no-verify-fixpoint>,loop-unroll<O3>,transform-warning,sroa<preserve-cfg>,infer-alignment,instcombine<max-iterations=1;no-verify-fixpoint>,loop-mssa(licm<allowspeculation>),alignment-from-assumptions,loop-sink,instsimplify,div-rem-pairs,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;switch-to-arithmetic;no-switch-to-lookup;keep-loops;no-hoist-common-insts;hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;speculate-unpredictables>)" on module "tc1.ll"
3. Running pass "loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>" on function "computeSAD"
#0 0x000076af032a7579 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) build/rvdev/../../llvm/lib/Support/Unix/Signals.inc:842:11
#1 0x000076af032a7b9b PrintStackTraceSignalHandler(void*) build/rvdev/../../llvm/lib/Support/Unix/Signals.inc:924:1
#2 0x000076af032a5631 llvm::sys::RunSignalHandlers() build/rvdev/../../llvm/lib/Support/Signals.cpp:108:5
#3 0x000076af032a6d0b llvm::sys::CleanupOnSignal(unsigned long) build/rvdev/../../llvm/lib/Support/Unix/Signals.inc:377:1
#4 0x000076af030ec062 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) build/rvdev/../../llvm/lib/Support/CrashRecoveryContext.cpp:0:7
#5 0x000076af030ec4c1 CrashRecoverySignalHandler(int) build/rvdev/../../llvm/lib/Support/CrashRecoveryContext.cpp:391:1
#6 0x000076af0263e4d0 (/usr/lib/libc.so.6+0x3e4d0)
#7 0x000076af0269890c (/usr/lib/libc.so.6+0x9890c)
#8 0x000076af0263e3a0 raise (/usr/lib/libc.so.6+0x3e3a0)
#9 0x000076af0262557a abort (/usr/lib/libc.so.6+0x2557a)
#10 0x000076af026254e3 __assert_perror_fail (/usr/lib/libc.so.6+0x254e3)
#11 0x000076af09187dc8 llvm::LoopVectorizationPlanner::executePlan(llvm::ElementCount, unsigned int, llvm::VPlan&, llvm::InnerLoopVectorizer&, llvm::DominatorTree*, bool) build/rvdev/../../llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:0:3
#12 0x000076af091939e0 llvm::LoopVectorizePass::processLoop(llvm::Loop*) build/rvdev/../../llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:10090:5
#13 0x000076af091988fc llvm::LoopVectorizePass::runImpl(llvm::Function&) build/rvdev/../../llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:10143:30
#14 0x000076af09198d7e llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) build/rvdev/../../llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:10181:32
...
CC @lukel97