<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/134696>134696</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[LoopVectorize] Assertion `isPowerOf2_32(End.getKnownMinValue()) && "Expected End to be a power of 2"' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ewlu
</td>
</tr>
</table>
<pre>
Testcase:
```llvm ir
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"
@a = external global [0 x [12 x i16]]
define void @b(i64 %0) #0 {
entry:
br label %for.cond3.preheader
for.cond3.preheader: ; preds = %for.cond3.preheader, %entry
%indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.cond3.preheader ]
%arrayidx9 = getelementptr [0 x [12 x i16]], ptr @a, i64 0, i64 0, i64 %indvars.iv
%1 = load i16, ptr %arrayidx9, align 2
%arrayidx9.2 = getelementptr [0 x [12 x i16]], ptr @a, i64 0, i64 8, i64 %indvars.iv
store i16 0, ptr %arrayidx9.2, align 2
%indvars.iv.next = add nsw i64 %indvars.iv, 3
%cmp = icmp ult i64 %indvars.iv, %0
br i1 %cmp, label %for.cond3.preheader, label %for.cond.cleanup.loopexit
for.cond.cleanup.loopexit: ; preds = %for.cond3.preheader
ret void
}
attributes #0 = { "target-features"="+v" }
```
Commands/backtrace
```
$ /scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt reduced.ll --passes=loop-vectorize
WARNING: You're attempting to print out a bitcode file.
This is inadvisable as it may cause display problems. If
you REALLY want to taste LLVM bitcode first-hand, you
can force output with the `-f' option.
opt: /scratch/ewlu/daily-upstream-build/llvm/llvm/lib/Transforms/Vectorize/VPlanHelpers.h:87: llvm::VFRange::VFRange(const llvm::ElementCount&, const llvm::ElementCount&): Assertion `isPowerOf2_32(End.getKnownMinValue()) && "Expected End to be a power of 2"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt reduced.ll --passes=loop-vectorize
1. Running pass "function(loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>)" on module "reduced.ll"
2. Running pass "loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>" on function "b"
#0 0x00005c0c5d95b1a2 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x349c1a2)
#1 0x00005c0c5d95820f llvm::sys::RunSignalHandlers() (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x349920f)
#2 0x00005c0c5d958354 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#3 0x0000774312045330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
#4 0x000077431209eb2c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x000077431209eb2c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x000077431209eb2c pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x000077431204527e raise ./signal/../sysdeps/posix/raise.c:27:6
#8 0x00007743120288ff abort ./stdlib/abort.c:81:7
#9 0x000077431202881b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x000077431203b517 (/lib/x86_64-linux-gnu/libc.so.6+0x3b517)
#11 0x00005c0c5c7b1baf llvm::LoopVectorizationPlanner::buildVPlansWithVPRecipes(llvm::ElementCount, llvm::ElementCount) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x22f2baf)
#12 0x00005c0c5c7b210d llvm::LoopVectorizationPlanner::plan(llvm::ElementCount, unsigned int) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x22f310d)
#13 0x00005c0c5c7b4105 llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x22f5105)
#14 0x00005c0c5c7b7511 llvm::LoopVectorizePass::runImpl(llvm::Function&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x22f8511)
#15 0x00005c0c5c7b7ad7 llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x22f8ad7)
#16 0x00005c0c5b484b75 llvm::detail::PassModel<llvm::Function, llvm::LoopVectorizePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0xfc5b75)
#17 0x00005c0c5d74633a llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x328733a)
#18 0x00005c0c5b4872b5 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0xfc82b5)
#19 0x00005c0c5d744c14 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x3285c14)
#20 0x00005c0c5b483265 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0xfc4265)
#21 0x00005c0c5d74522d llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x328622d)
#22 0x00005c0c5ac19391 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) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x75a391)
#23 0x00005c0c5ac0aeac optMain (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x74beac)
#24 0x000077431202a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#25 0x000077431202a28b call_init ./csu/../csu/libc-start.c:128:20
#26 0x000077431202a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#27 0x00005c0c5ac014f5 _start (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x7424f5)
Aborted (core dumped)
```
godbolt: https://godbolt.org/z/rKd5sx7xW
Found via fuzzer (C program before reduction)
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWllv47YW_jXMC2FDOtTmhzwoi28HTdogM0jRJ4MiKZt3aFIgqcSeX39Byo6XOGmmd9K7tHDHsnj4nfOdjRQV6pycayHOUX6B8qsz2vuFsefiSfVnjeHr8y_CeUadQKRGSY2KZPgo9bjE0qKk9tTOhceceqro2vQeI3KFEYAYLRGpxahDpC6y-M9IPl-kUCFSp1CNNIHh3udwD2CH6a3slNjiWenYY5GNev1Vmyc9UlL3q9Fc98Oc8MkSGqXFygurqcJzZRqqMMovErwKXyngFZZpgfKr8InTuGilFvjRSI5RljQIKllkGEGeIJhgBCTBqLxASS20t-vBExg3FivaCBUEW2PHzGhOxp0VC0G5sAP2qQFS4zf_Q-QCd1Zwt2F-Eh0uw8hgULAGQS41f6TWjeVjnNgtJI488guc7MvjwDz8zi8Op421WPmN5AmdePBY1EWtpWvJV5Ooai68UGIptO-8fd3bcInjeJbQcB2MS15cHFi0VZdGNcpQHuG2QHt2hHtUybnG8MLGMfwoK6vXrXTeWBFgBulj-8ZwZOFLz0cjKedYu6cTSuASky01tuyitAwXvfKnxWMGb1JVppt5YeDNvD01PmZKUN13Y2VMJ1bSH2b3y2FSvy-Ng3VW-Fh8AbPc1CT13sqm98Jt6i9AlCFfYWgOo1ZQ31vhQvWTq_AvXDwiALzB2HaqAe_SLJdUc4dg2lD21VvKxLEUBBdOHbPUswWCaWiCCKacSrUe9Z3zVtDlqOml4gEmfI_m7PH5OvTEoSuFW1IjmJrOYyt4zwQfK4VHo446JxwiV8FTo0fBvLHyWzDlt_r-l0-__CN47nfTIyitwNR7sey81HPsDe6s1B6HDktxIz0zXOBWKjFGSf1lIR0OH035o3S0UQJTh6XHS7rGjPZOYC5dp-gad9Y0SizdGH9qUVKvTY_vr-ubm9_xE9U-aPLUeYFvbh5u9xRZ50cLqnlIkLXpUVIzqnFrLBPBqK73-En6BfYLgVGRjFoEJTadl0aPhyCYbkiM9zs5uHTvSzYIpl8s1a41dhmC-fDsQZg-3CmqfxKqE9aNF4jUVRnUxcmkRqR-mN5TPReHP6BiRju_J3Y9NIlL02uPIHabPxSZBE21c8IGvoG_dHfmSdhfW5gRQFBdaz6eC_9zWLtupX6gqg_Kw9S4yBQIipDe16tOMC84vtY8xKIRmOIuQGHTYoiJXuKWSiV48OvdzXX9-Rq7vlnKmBn9HFvRGRsjufC-c8FmmCKYzqVf9M2YmeWhb0edNf8UzCOYSuf6UFRTTDXHUjPVcxFjyix1C_xcPUH3Z0_ZV8z7ZTcsisl4WMHurJlbusTUzvvgJ_edYf_RtZVu7LrvtQ7FFCSDr9tesxAvBNXRHHKpzUhqL6wS9FGMYprzkdFqjciFNjvRoyFErmNIARuNl4b3YQMDsDN02K3AKxb9UDOiDVuOAb0ZlA8tNVklSZLkLGE5n-RNSmEvwd3aDRd3oenEOH-JPROqnZClTzMzhG5TJzKUQ8jm6gOijeAiWZFswlIKwccDkfSISAVJe4rIfa8_y7mm6iequRLWDcX3wbZOIGl3tsKxrSTP8IFVYe-p4x7MybnUrZl5BHX4HVfIcDnZzHBj1oW6S-L_gwKyUVCWGUkhyXIS1s7IcGieq6qYFdn-3jkMsLEz4yLaHKfsLM4OASeiAYZns84vrKB89lUqNZPLbmiHNObZGMFUd14hmO6LjRkidRa2_2WxAc_fA643W_m3YMv4LLF1QnEKdn_Om1jVZB-rPHYolAJbKp2IIC5GAsF0HH-tHRddaJ6dcTLkQ5SMsBDWoi3x6hAVqqptMW1Cz444ng_RircGq9JAczN98mJ62uCZVrOwQZ5xs6RyCIPUkWO4vXRzRgesNC2DMZO45yFpcohGmjwtvy9n4pQhZwLgQUWyskkbul-RN8Z022U7ZkxYtnV8LkKkjkUVV3L3m_SLh7t7wWQXVqTqteX38tWF-UOrG6CFhrY73nDEG9KEv5t3p6h-k2Ov45M6_wt6LEBL0oTvmJEjZlma5K8wE3fUbTpuZw0TzoXRA2bDjfrjSeRpku9IZEckyjxN_5iE7fWnZacOCEyftw3Fx5Oo8jTdkciPSVBevovE6wT2y6fWVK2ddLdU03lIzcsTk8LW4q8gTvleUyn2iTdZlTXlfgpy4alUmy0Lde7WcKFOm39A-KXD_pQ_wud_09Ety5tyr0rKgy1KmRWE0D27o2_fsvlv5j4CVUkI3fmvOsrTEpofkacf5ve_WbxaVkGzl-6To3TPWJrt2X0bH-C-mK2NIQw1p5039rQHhgnfxX8z5S_K1pyl2TN9SI6ylUDxfdm65Xv5Tqf9Ca-8lmz_3a5uWQbFLtEgPUq0HIC_o75P-ff_2W0EqgJgt_WEg001ZemETPZ3bbaP6XUnO6GkPjye-Oyt1PN70Z5KzxcO-BKPlW8pW0Sc-tTojWwstetPujXDpvBYyhj1azwKnUp1AuTfGn6FTm0tXYe7-xGLPlH9XOqXPX4n7zwf7j2fg5HL4S3YvhsD1kWIm7Dbo86XK4fp_Mwbs-kVA4uf5XBY_JrUg7CylcJu5Zow8t3fH5qOZU7JZLf9BnKYjQkVlGHT-dvwxP2RdmSNoGxnx9GxDNCUUTybhcfymfPU-hmjSs2eDwKY618eUmxOQE5NisfnZYZITTYa82ONUDU4ykst_bGS4TIgjyLycO4QX_lCskEsTiEecDhl_klkkpWI1PkGuDwKUpq1OR4gPzZGkLWbjl83xnoRC4kZK-IRudh2tcM3U3PDG6Pii5Gjw_phYGzsHMH0G4Kp_ZnnblWufhtmTk2vOX6UFLf9t2_CBm2XuNucvTeiDZrjwfOwJ5uc8XPCJ2RCz8R5WmZZkhXlZHK2OAdCi6TNy6YBVhUlZ1lScQJCgCB5kpEzeQ4J5EmWlGkJBZmMSZsknBY0yao0bSYtyhKxpFKNg4OCyWfxRcJ5SrJiUpzFF4ou_pEBgBZPOI4iAJRfndnz6NWmnzuUJUo673YwXnoV_zrh4EkN5Vf_gbctZ71V53_-jcrGF4_n8K8AAAD__85nXag">