<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/149651>149651</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[LV] VPlan cost model and legacy cost model disagreed
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
fhahn
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
sjoerdmeijer
</td>
</tr>
</table>
<pre>
A new case where the cost-models disagree:
```
bool a;
extern short b[];
short c;
long d;
void e(bool g[]) {
#pragma clang loop vectorize_predicate(enable)
for (unsigned f(c); f < 23; f += 4) {
a = 0;
b[f] = d + g[0];
}
}
```
this runs into this error when e.g. compiled with `clang++ -ofast -mcpu=grace`:
```
llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:7107: VectorizationFactor llvm::LoopVectorizationPlanner::computeBest
VF(): Assertion `(BestFactor.Width == LegacyVF.Width || BestPlan.hasEarlyExit() || planContainsAdditionalSimplifications(getPlanFor(BestFactor.Width), CostCtx, OrigLoop, B
estFactor.Width) || planContainsAdditionalSimplifications( getPlanFor(LegacyVF.Width), CostCtx, OrigLoop, LegacyVF.Width)) && " VPlan cost model and legacy cost model disa
greed"' failed.
```
Stack trace:
```
#0 0x0000aaaaaf3acc90 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/llvm-project/build_expensive_checks/bin/clang+++0x490cc90)
#1 0x0000aaaaaf3aa728 llvm::sys::RunSignalHandlers() (/llvm-project/build_expensive_checks/bin/clang+++0x490a728)
#2 0x0000aaaaaf2ffd70 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x0000fffff7fb09d0 (linux-vdso.so.1+0x9d0)
#4 0x0000fffff7a1f200 __pthread_kill_implementation ./nptl/./nptl/pthread_kill.c:44:76
#5 0x0000fffff79da67c gsignal ./signal/../sysdeps/posix/raise.c:27:6
#6 0x0000fffff79c7130 abort ./stdlib/./stdlib/abort.c:81:7
#7 0x0000fffff79d3fd0 __assert_fail_base ./assert/./assert/assert.c:89:7
#8 0x0000fffff79d4040 __assert_perror_fail ./assert/./assert/assert-perr.c:31:1
#9 0x0000aaaab069de8c planContainsAdditionalSimplifications(llvm::VPlan&, llvm::VPCostContext&, llvm::Loop*, llvm::ElementCount) LoopVectorize.cpp:0:0
#10 0x0000aaaab06af99c llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/llvm-project/build_expensive_checks/bin/clang+++0x5c0f99c)
#11 0x0000aaaab06b75c0 llvm::LoopVectorizePass::runImpl(llvm::Function&) (/llvm-project/build_expensive_checks/bin/clang+++0x5c175c0)
#12 0x0000aaaab06b7f30 llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/llvm-project/build_expensive_checks/bin/clang+++0x5c17f30)
#13 0x0000aaaaaee5ab14 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/llvm-project/build_expensive_checks/bin/clang+++0x43bab14)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzMV01v2zgT_jX0ZRCDIiVLOvigODHeF-hii7bIHg1KpGS2MimQdOLsr18MJTdy6n4tcljDifn5zDOjZ4aU8F53Rqk1yW4JY-1e7A1hjGR3C3EMe-vW_rNVTh6U_qzcorbyeV2BUU_QCK_gaa-cgrBX0Fgfbg5Wqt6D1F50TinCK0Ljd0WnL61qa3sQhN8SWqlTUM6A31sXoEYK2d04Mw41Y6e3pgM5th-tlqAIKyJON-1hJZAcpwnjgxPdQUDTC9NBb-0Aj6oJ1um_1W5wSupGBARQRtS9IqwktAJorQPCiqOJ8ZDQElY0OMlvoQXCN8D41Ga3hN9B-mIUAEAADtKRJA6gOy3J7uK4xF2RLf3qIgDJ75Dy-H8WIkKrsNce3NF40CZYiF3lnHUYcgNq2S2hsYdB90rCkw57ICsaXUZ67BZubCt8gJtDMxwJv-ucaBSiX3skff94uBmc_ayaQNgWu_ija8K2n5wwvrXu4AnbPpwDSdj2nbXD1_6yGQbCqzyhOeEVnMdF0NZsBXYgovKK8Gq-M6543wtjlBtn0atjULfKB0Krhy1hRXwMFVTeK4fr0VfCClwygi__0hJDwO8w2O9UJ5rnh-15NN-QfAO4Gg0t98LfC9c_3590GMHPS4ZemI01QWjjKyk12hL9R30Yet2ibLQ1nrCiUxFpa90VFkiWbWBjfdiEEzb_dLpDn7EdVf_Nht8lABcMLv39sf0ra0sgbEXYCghj8ICwMZkhJjMII6GPm-ajmOGEVpjkEssFy6EVqMXlt1L-GETzBUIU4DX1AWGcAj1RSqnAT8tF05R0phj_7MfGe6dNiICfIh4rXhY58bSzPjglDtGhDabO6F4xqXom8vqoe7lTp0EZrx_Vrtmr5gtqvNaGsO0slQi7pae0pMhpqhaE8eQVY5Gz4hrjD0fzUXdG9P8TRvbK-bPk3oYUmn0hxS5IsbaVOYWNE37_QTX2UbnnCy6EFVOILtagAtUpTDlN49-Izyf8Fj95W9NSUvSk1-Z4unmU3i69XSaRXCln0UovNoqkZZTCbjeEvVNC7r7ovt-hytVBmRBlDkvCtmYIPWHbWXO-Y9kQXqUp1p3VZCe7sFNKscob6Hx0OiKOTcSMvWcv1YABHqzXJ8K2TmivIjDDSnbGXV3iNnnCKYgaz6iIE-RYLS86cT5iFQmSnLDyVxx5KzEWIla3HabRrsazFbHGwQn4a2dsjMjlDLl4hZzSdIY8xPMjGvgp9g0ujgY4Uk8mA-VMXzVdlVIVzS8XrZfkiEVmytH5aKxZo_i-mR0LWHU5eD8KZmOPo4yvnUln_WLO0kv-oi3L5jsHk3ov_JTCg7ON8n5kUFyh9DbZnDUU-YxJg2yTS7Z1njX052zd0fz_MPQXTLdH0-BjiFF9K7YJ8nlhy16zbfmvsf0-0_mjrozon732fwgjOrwrbK5s4vdv7GHLZx7yeXVVKhN1ks4YolM_ZPdv_AH06b8eqZTXGIspUuejfSHXXJa8FAu1TvKMlZwXq3SxX4usSNtSslzJnOV1UjarVaqkkjTJeEHZQq8ZZRnNkzJJacrSJVtlWapyscqLQrZpRlKqDkL3S-S9tK5baO-Pap2k5SpLFr2oVe-nVxp8V4mz02uNW0dn62PnSUp77YN_gQk69PFd6N0DXt1_4zYUr0KLo-vX-xCGqG62JWzb6bA_1svGHmY368toR3YY3Yn-45r9EwAA__9UkjK9">