<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/110819>110819</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang crashes at -O2 on x86_64-linux-gnu: Assertion `(BestFactor.Width == LegacyVF.Width || planContainsAdditionalSimplifications(getPlanFor(BestFactor.Width), CostCtx, OrigLoop)) && " VPlan cost model and legacy cost model disagreed"' failed
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
zhendongsu
</td>
</tr>
</table>
<pre>
Compiler Explorer: https://godbolt.org/z/EYjcEGMnc
Related: https://github.com/llvm/llvm-project/issues/110440
```
[508] % clangtk -v
clang version 20.0.0git (https://github.com/llvm/llvm-project.git 87121403e251828ed0fee8a9c2a2993ce8f57861)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/suz-local/software/local/clang-trunk/bin
Build config: +assertions
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/10
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/11
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/11
Candidate multilib: .;@m64
Selected multilib: .;@m64
[509] %
[509] % clangtk -O2 small.c
clang-20: /local/suz-local/software/clangbuild/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:7392: llvm::VectorizationFactor llvm::LoopVectorizationPlanner::computeBestVF(): Assertion `(BestFactor.Width == LegacyVF.Width || planContainsAdditionalSimplifications(getPlanFor(BestFactor.Width), CostCtx, OrigLoop)) && " VPlan cost model and legacy cost model disagreed"' 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: /local/suz-local/software/local/clang-trunk/bin/clang-20 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -dumpdir a- -disable-free -clear-ast-before-backend -main-file-name small.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/local/suz-local/software/emitesting/bugs/20241002-clangtk-m64-O2-build-080012/delta -fcoverage-compilation-dir=/local/suz-local/software/emitesting/bugs/20241002-clangtk-m64-O2-build-080012/delta -resource-dir /local/suz-local/software/local/clang-trunk/lib/clang/20 -I /usr/local/include -I /local/suz-local/software/local/include -internal-isystem /local/suz-local/software/local/clang-trunk/lib/clang/20/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcolor-diagnostics -vectorize-loops -vectorize-slp -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/small-ed95f7.o -x c small.c
1. <eof> parser at end of file
2. Optimizer
3. Running pass "function<eager-inv>(float2int,lower-constant-intrinsics,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;>,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-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<O2>,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;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 "small.c"
4. Running pass "loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>" on function "main"
#0 0x0000564951de5f4f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x43c7f4f)
#1 0x0000564951de3724 SignalHandler(int) Signals.cpp:0:0
#2 0x00007fa225b4a420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#3 0x00007fa22558100b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#4 0x00007fa225560859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
#5 0x00007fa225560729 get_sysdep_segment_value /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:509:8
#6 0x00007fa225560729 _nl_load_domain /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:970:34
#7 0x00007fa225571fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#8 0x000056495378a669 llvm::LoopVectorizationPlanner::computeBestVF() (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x5d6c669)
#9 0x00005649537a2a69 llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x5d84a69)
#10 0x00005649537a58b1 llvm::LoopVectorizePass::runImpl(llvm::Function&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x5d878b1)
#11 0x00005649537a5f23 llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x5d87f23)
#12 0x0000564953312986 llvm::detail::PassModel<llvm::Function, llvm::LoopVectorizePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x58f4986)
#13 0x0000564951770e51 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x3d52e51)
#14 0x000056494f285ec6 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x1867ec6)
#15 0x000056495176f7bd llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x3d517bd)
#16 0x000056494f284aa6 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x1866aa6)
#17 0x000056495176f1f1 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x3d511f1)
#18 0x000056495209da73 (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile>>&, clang::BackendConsumer*) BackendUtil.cpp:0:0
#19 0x00005649520a1048 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x4683048)
#20 0x000056495277f0bc clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x4d610bc)
#21 0x0000564954629ffc clang::ParseAST(clang::Sema&, bool, bool) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x6c0bffc)
#22 0x000056495277f4d8 clang::CodeGenAction::ExecuteAction() (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x4d614d8)
#23 0x0000564952a46b99 clang::FrontendAction::Execute() (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x5028b99)
#24 0x00005649529c306e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x4fa506e)
#25 0x0000564952b331a6 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x51151a6)
#26 0x000056494ee4bd25 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x142dd25)
#27 0x000056494ee4383a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#28 0x000056494ee4826e clang_main(int, char**, llvm::ToolContext const&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x142a26e)
#29 0x000056494ed3456b main (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x131656b)
#30 0x00007fa225562083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#31 0x000056494ee432ce _start (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x14252ce)
clangtk: error: unable to execute command: Aborted
clangtk: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 20.0.0git (https://github.com/llvm/llvm-project.git 87121403e251828ed0fee8a9c2a2993ce8f57861)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/suz-local/software/local/clang-trunk/bin
Build config: +assertions
clangtk: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clangtk: note: diagnostic msg: /tmp/small-e8a5a2.c
clangtk: note: diagnostic msg: /tmp/small-e8a5a2.sh
clangtk: note: diagnostic msg:
********************
[510] %
[510] % cat small.c
int a, b, d;
int e(char f, int g) { return g > 0 || f >> g ? 0 : f << g; }
int main() {
char i;
for (; b; b++) {
unsigned c = 128;
i = a ? c % a : 0;
d = e(1, i);
}
return 0;
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW9ty2ziTfhr6BgUVCVIUdeELWbaSVGXWqdj_TO2VCgSaNMYkwAVAH-bptwCQkigriTOx9zC7VY4i4tRfNz50N0CIGiNqCXAezS-i-eUZ7e2d0ud_3YHkStamPysVfz5fq7YTDWh09dQ1SoOO0hW6s7YzUbqKyCYim1rxUjV2pnQdkc1fEdlc_fuf7OrDb5JF8WUUr8LnV2ioBX6iv7B3fTljqo3Ipmkexv9wp9WfwGxENsKYHkxENkkSZ1l8OGyUx8NfeJxfzOMiml-iiMwRa6is7T3CD6HWP6MH0EYoiUg8i2dxLSyKSPFzmGauV7FISJLFKZB5UpACeFwBFHTJCCXLZcqgqOaLIk8isgzib6muwToLPBX5Ns9wL--lepS4EbJ_wrXsh3Z3GihHreLQuNadMuIpVH2SxtKmAX4p_FQ4XIrRJiIb0_-Fd99VZR-phoNqrzu2upf3EdmUQoYBL3rRcMSUrEQdBrygxoC2QkkTmmxULzliVHLBqQX0Yb1GIuCgrtmAozfaiROlsx9jEdkMWu61I5skfocxk7cfc5ixG2iAWeBvgm-9Q9b2jRWuV7pCsyi9iLK4zbMjkd9r5Gm-HGl-qmxH_WuCTEubZsYO1gAm8evY41uXjiMvV-W4Lrz2t5pKUyndumX6OzCrtPjLjfBZqW73PGNdF6WrRbokTr4fIV1F6Wps4Y27oe7hoPZwDN_iS0Ol9M4oSldMtV1v4QKM_X0TkcKtt3SFViONkfMOpHD1YeTZH4LbOxSll1F6iT5DTdnz75uxdLGOFmvUNVSulbRUSLPiXLiBaHMj2q4RlWA0rA9S1GAdmI3SJ0Q4JGSN1srYtX1yX6-1qJ02vmaJIpJHJEcRIeh3Nwxiytiw8BGVHDUe22EpF4bWGoBHhERkgSoqGuCzMLdfPl-tbq6Q6ctWWERR2ddIQ6e0RVb9gtv1WIRkTc8B2TtATFNzh0rK7q2mDJxmnYZOKwbGAEdG9ToUu57UGMWE8_5I9xIZpkVnB8g3lrJ7xPvW8SIUxbMoXn7Rqta0RVTXfQvSml_1dmMZiRFmLEHYatE18E1XjDC0wmJV_omwg8eFRhQj7CagbABXGgBh1gDVmBqLS6iUBuxsApIj3FIhcSUawJK2MK5BhFsNDqTjDw5T2gmGcCcYbuABGkTCgzC4E4BwW2naAu6UkNYx_lIqCQhXLbV3GLSWCuGq6jBT0s2FjdJLJRGupMLaOUQha-zaItwyJY3VveMnpo2gBgzCVS8fheTYOq1MlF4ShK0PVJh1vTMPzjOEbS_BF9QgQTvEHMq-rkG7KiHrKL2seYlw5csx84lDUJO7WHX548lzBgdj3WBkU_a1ox6JSZbEMcGDQ8NtnuFrgr1PwnERxwmJyIZDYynCFVMPoGkN_03yNQTmO5F_m63BofoyDwDhTwexZugyrsZQ90o5u06eS5I2WJhnY6F9M6w_EvINJb7T9IexlWxms5cfJ9q-lAZP7gt7KXVoemKc7_f-eRE-QOMKtFYaN8L57WSJcFXLnuEhU43Sy2xGZgnClbkXHVZcY3YH7B4Lieu28rxvlMZc0FoqYwUzCD-MQRc3SnWTAtN0CFeUc21EjfDldvthvd5-XP1-tb38Y_V1Q7brzaft6ua3KL1MEFYOtW07RwjnxjDw5bxazBTCT4hN04vEOe8oXYOqovQKdVQb0Iha5JyiqpDziKElcS2vOyta8RfoUJa6sq-9dA4FddQYFxqrXrKQc62BOocj5EOUXkWkqBpFLRHSRmTdqEfQ2Ls4Kq2bAC2kEcz4OhdxC_cf1spSC1G6vgPKQWPed80Qz6P0QirsAhnVgCs3IVZ5SX4EzKEB386H9VAkjNWi7K0LdkK6wIltI3BLu07IehS-t32UrqUK9GiAPngxDDhWsnkO8vfTNK0KQISswHvvWrqwOI7fKMoxNKL1TYxlqi2FdNJa-oSFBT1kLOllMorRonrGlXjyoSWMbkJ-88yqOkrXpZK9wW44bO80mDvV8GGASulHqjk2j8KyO2d2HqUXw5OmsgZsFRbMhfWx2CrHxPu-CwDuAbpAzSi9uFPCWOe0WyW9RBMahXKnncHGKg0GPwobBOKKuhTZhZ4LI-T9cXfTAevdphOXjWL3vmjQL_QvNZXsLgjaN-5lp4ELNgZEb5fmYAp1RNbhAY9m_iWj-wnspVZNE6XraxJK7ZhQ40eqfYAla6MVjdJ1p8GAfgDsp-k0K34VT2sMdUtGsDZK17Rp1ONoIr9SrsIi2InElVYtpsb0bTfkxmEgNzMDntH6EVlz8YA1tLijQrumloqGuY1toPCreSgV_ikqupl-ycYJFXesO6LTa6noRPwSG79LxaXbKyjpdgN9A849ju6XkOBDs1M-9E2dkAcwemU3ust1d_JRRNIYxU9xHMfzPFvOEw7zKqsO9nPm2YQvX7SQ1m8BbsM-otg30vRxq4zVQFu_TXIbcBs2TcXbbAQichE_ZSlbVFm1O6Rx8JMj-OmCZOhG1JI2H6nkjXMBxYAmFJthZxv7f7uByDDQoqKEzMuMZiRG260GT6CttqMyPss5kbM0ouysPw6aGTULiJMsc9gP8KYTMfMiieMSaSqMI8hm3L7XjSgZ_sw-kfhp90hmqUuhjNdiTJ7Ms-HQufS3l-IpFDx4NLJ3j37oGYvS1TyJ0lWyR5JNkeRxMV8iWiqv6euQWB6s4Xt5IYUTstgLmR8LWZAlqsFuA-6tgdq5pO0DbfpXW0BI23jeUN6amtEgeu6SmVWxl52fkr2VzdZ13HLllsKviVwuHInSbC9zMZW5SCqev4I4zFEm95RJ04rnE8oUhxRPFwXN8-WvnLi88aqc85zl-XICeTmFTAn9JmT4Qs3gYoZDic9DCjhpHpHVe0AvMnoA3fmT-Aj6vCiTH0PXvfzUds0E9mZMhp1LfAfoi6JMJtCTY-gVSV8F_duw1wf9V5I2z0aY36h0uX2Urk90ckHnndStSDpRl0zUTROyLPIDuBxcpjIEL2rMb-GM_hToiZovzfS3rOD-_veYt6iyZZFPzJtOIutiEcP8cCF4k34P6j_faimfE5hP12B2YLWsIsUc2FuQ8t2s_c-fpaTIF8Cm3J5PuZ1Xi5IfwP3NZ-y3aoTmrL_itLNKn1Y8dPgptYcu70fNZFHyidL5ETUzSn-OmqOW61ea6m_Y4lvM-h9n4KTIc0qnrFocsyqpXuMxT5n1H2YtR8ekmnrKSVpL4iWni9SJpVLJ51b1Bknagun8ZnMZUF61wq6MgbZsnj9C041Z7tdeDseTIQMWHTT-sKcI592-0UV437PaOUxjeajppfiPHradndrEbWu7Ry0sbMfN7UEnDv4kYeuPGuEHHQdnm79G7K1SzXVvu95uRODFa2Qe9ToU-NIGayVN37q9sc-qh9J_WdG83By7uVpO54omcVYcDuvmZRgkYJha_nJ_2H0laz8xx8A--iPeG6Ca3V2HYynkT4hfNl0rDh9A_qBVuMHxg0afqaxPNdmb9cZqIeuvUJ1ye958p-y7OhGUP0mreyMe4CtUa2m_HM36QzXk4276bvwbiCE-_9fT9BWUeeOTnbxI46w49A9kshEji0UVl-x7uAKN_JmPv-EQjj__JcURGVc3t2slLTzZd3F1Gc-TuGQTVSYbsywny6qaqPKFagOrm9sp0Bto6cDHUqlm__9bQ85ZXFbVFDI5tn7GixOLcCB6cAJPwHoLI_ff4ajB2TbjU5pMtimEZnm5XB4C3Wg32bsleYj0fY5DYlKUy8mZAskmGJcsjXOYGjNc3fNXxiSD0_b8tlLvwuOKzuMcJnpM0mZSpmlC80kYCIj36jwM1yem6F-o-y5nO0kyT6YJGplkwABZyckcMZZsw6n4QQa10po-O6-frtkd1WNwWI3ucVJG1uhBCf4uaiQZ4ZzMJ2osjtRIi5Si0fbr5NY7iQNlblraNOFIwx9SndLpKOy5MQYveRAYl4hr8QD6ZJJAiiNYBRlZPto3vP711vPGWr1O6JtblJIjYi8n0HmazfMSDefDbyo7TfJ5Xh7K3r2AGY-pSVykaLttRMm2xlJttz9zUM1MP74aCF99pR_HH1mnGXGfe_HJMZkIAxQEv73h54TtDT9c04nSFfJ3KtyXXtKyAWQVgsBnxFTbUukvI69KpS3wb_cOl4arwTmOXYeLd4j3fuDw_sTp1htA-MGXASBx4K2W_38J-e9fQj6YGalcyrlC-9suqDWh30DAX_g7uFo-3KZc3d6u1h_R7ccrtLn-_Pn6j0__9gFtPn2-ukG317744l8f0NerL9dfb3d3GL-cug1ZGOd4vnkjctdAA_JXBIEjandDvs4CRxd1CjqnZHL19--NYO5-fhreajLmF_MkfnnXeV_GqJ1eQhLSIupTW_fBo_RiX-737y5SVcMrZVT7cLC4QBpsryWqUZReoXi8CVyhsIPx5RtXnq584TpK16iO0gsULS73AoawNAw6vL4KwV3skCBUKe1dYXqByvBBLvzfpBtCvfQ_1OCIoSi9RInvsq8WvpR6aMxbg3qA8aQV962c6onX2p997Op38NFogn3vXd3uhxZn_Dzly3RJz-A8WZBFkc8TUpzdncckLZcJFPkyyQBKThfLZV5xtiyrLCvj6kycj7cpkzglcTHLCz5nizyhUPIcqkWUxdBS0cycm5spXZ_5K8jnSRIXyfKsoSU0xv9ihZDhziGJ5pdn-tz7RX9lM4sbYazZD2GFbeA8eF1_bxkMotbfu1MSvXh1-n_s5jg663Vz_ku_yHFT83BO_jMAAP__00tpAQ">