<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/125274>125274</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[LoopVectorize] Assertion `all_of(I->users(), [&InsertedSet](Value *U) { return InsertedSet.contains(cast<Instruction>(U)); }) && "removed instruction should only be used by instructions inserted " "during expansion"' 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"
define void @d(i1 %e, ptr %g, ptr %c, i64 %conv14) #0 {
entry:
br label %for.body
for.cond10.preheader: ; preds = %for.body
%conv141 = select i1 %e, i64 16, i64 15
br i1 false, label %for.body18.us, label %for.body18
for.body18.us: ; preds = %for.body18.us, %for.cond10.preheader
%l.058.us = phi i64 [ %add42.us, %for.body18.us ], [ 0, %for.cond10.preheader ]
%arrayidx23.us = getelementptr i8, ptr %g, i64 %l.058.us
%0 = load i8, ptr %arrayidx23.us, align 1
store i8 %0, ptr %c, align 1
%add42.us = add i64 %add, %l.058.us
%cmp15.us = icmp ult i64 %l.058.us, %conv141
br i1 %cmp15.us, label %for.body18.us, label %for.cond44.preheader.loopexit
for.body: ; preds = %for.body, %entry
%add = select i1 %e, i64 2, i64 3
br i1 false, label %for.body, label %for.cond10.preheader
for.cond44.preheader.split: ; preds = %for.body18
ret void
for.cond44.preheader.loopexit: ; preds = %for.body18.us
ret void
for.body18: ; preds = %for.body18, %for.cond10.preheader
%l.058 = phi i64 [ %add42, %for.body18 ], [ 0, %for.cond10.preheader ]
%storedv215657 = phi i8 [ %storedv21, %for.body18 ], [ 0, %for.cond10.preheader ]
%storedv21 = xor i8 0, 0
%add42 = add nsw i64 %add, %l.058
%cmp15 = icmp ult i64 %l.058, %conv14
br i1 %cmp15, label %for.body18, label %for.cond44.preheader.split
}
attributes #0 = { "target-features"="+64bit,+a,+c,+d,+f,+m,+relax,+v,+zaamo,+zalrsc,+zicsr,+zifencei,+zmmul,+zve32f,+zve32x,+zve64d,+zve64f,+zve64x,+zvl128b,+zvl256b,+zvl32b,+zvl64b,-b,-e,-experimental-sdext,-experimental-sdtrig,-experimental-smctr,-experimental-ssctr,-experimental-svukte,-experimental-xqcia,-experimental-xqciac,-experimental-xqcicli,-experimental-xqcicm,-experimental-xqcics,-experimental-xqcicsr,-experimental-xqciint,-experimental-xqcilo,-experimental-xqcilsm,-experimental-xqcisls,-experimental-zalasr,-experimental-zicfilp,-experimental-zicfiss,-experimental-zvbc32e,-experimental-zvkgs,-h,-sha,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smcdeleg,-smcsrind,-smdbltrp,-smepmp,-smmpm,-smnpm,-smrnmi,-smstateen,-ssaia,-ssccfg,-ssccptr,-sscofpmf,-sscounterenw,-sscsrind,-ssdbltrp,-ssnpm,-sspm,-ssqosid,-ssstateen,-ssstrict,-sstc,-sstvala,-sstvecd,-ssu64xl,-supm,-svade,-svadu,-svbare,-svinval,-svnapot,-svpbmt,-svvptc,-xcvalu,-xcvbi,-xcvbitmanip,-xcvelw,-xcvmac,-xcvmem,-xcvsimd,-xmipscmove,-xmipslsp,-xsfcease,-xsfvcp,-xsfvfnrclipxfqf,-xsfvfwmaccqqq,-xsfvqmaccdod,-xsfvqmaccqoq,-xsifivecdiscarddlone,-xsifivecflushdlone,-xtheadba,-xtheadbb,-xtheadbs,-xtheadcmo,-xtheadcondmov,-xtheadfmemidx,-xtheadmac,-xtheadmemidx,-xtheadmempair,-xtheadsync,-xtheadvdot,-xventanacondops,-xwchc,-za128rs,-za64rs,-zabha,-zacas,-zama16b,-zawrs,-zba,-zbb,-zbc,-zbkb,-zbkc,-zbkx,-zbs,-zca,-zcb,-zcd,-zce,-zcf,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfbfmin,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zihintntl,-zihintpause,-zihpm,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-ztso,-zvbb,-zvbc,-zvfbfmin,-zvfbfwma,-zvfh,-zvfhmin,-zvkb,-zvkg,-zvkn,-zvknc,-zvkned,-zvkng,-zvknha,-zvknhb,-zvks,-zvksc,-zvksed,-zvksg,-zvksh,-zvkt,-zvl1024b,-zvl16384b,-zvl2048b,-zvl32768b,-zvl4096b,-zvl512b,-zvl65536b,-zvl8192b" }
```
Command/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/Utils/ScalarEvolutionExpander.cpp:2402: void llvm::SCEVExpanderCleaner::cleanup(): Assertion `all_of(I->users(), [&InsertedSet](Value *U) { return InsertedSet.contains(cast<Instruction>(U)); }) && "removed instruction should only be used by instructions inserted " "during expansion"' 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 "d"
#0 0x00006534614917e2 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x33f67e2)
#1 0x000065346148e82f llvm::sys::RunSignalHandlers() (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x33f382f)
#2 0x000065346148e96c SignalHandler(int) Signals.cpp:0:0
#3 0x000070607b045320 (/lib/x86_64-linux-gnu/libc.so.6+0x45320)
#4 0x000070607b09eb1c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x000070607b09eb1c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x000070607b09eb1c pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x000070607b04526e raise ./signal/../sysdeps/posix/raise.c:27:6
#8 0x000070607b0288ff abort ./stdlib/abort.c:81:7
#9 0x000070607b02881b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x000070607b03b507 (/lib/x86_64-linux-gnu/libc.so.6+0x3b507)
#11 0x00006534606ffe0f llvm::SCEVExpanderCleaner::cleanup() (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x2664e0f)
#12 0x00006534602d8327 (anonymous namespace)::GeneratedRTChecks::~GeneratedRTChecks() LoopVectorize.cpp:0:0
#13 0x00006534603335e0 llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x22985e0)
#14 0x0000653460335fe1 llvm::LoopVectorizePass::runImpl(llvm::Function&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x229afe1)
#15 0x00006534603365c7 llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x229b5c7)
#16 0x000065345f03f8c5 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+0xfa48c5)
#17 0x000065346127ef0a 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+0x31e3f0a)
#18 0x000065345f042055 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+0xfa7055)
#19 0x000065346127d81c llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x31e281c)
#20 0x000065345f03e785 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+0xfa3785)
#21 0x000065346127ddfd 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+0x31e2dfd)
#22 0x000065345e7eb195 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+0x750195)
#23 0x000065345e7db41e optMain (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x74041e)
#24 0x000070607b02a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#25 0x000070607b02a28b call_init ./csu/../csu/libc-start.c:128:20
#26 0x000070607b02a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#27 0x000065345e7d1c75 _start (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x736c75)
Aborted (core dumped)
```
Godbolt link: https://godbolt.org/z/rnzsfe3af
Found via fuzzer (C program before reduction)
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWtuT2yqa_2voF8ouCV0sP_SDuxOfTW0ym0pysjVPXQiQzTYCBZDa7Yf927e4yJYv3ZOcOT21uzOpjvnx8d35QAIbG8M3krFbUNyB4t0N7u1W6Vv2JPqbWtHn22_MWIINA9kKJCtQJuFPiKGFXINkZbHeMAsptljgZ9VbCLJ3ECDEZi3IVmzWgWxV5v5jxg8gRRXIVimqZjJDgfbV0RA66rSad4KN-jQ3ZCjzWS8fpXqSM8Flv5ttZB9kQLKirOGSwUFxCkGeUIAqnkKACgbQPeysdngzwcRhXuYeKzmkOUBLCFCWQLC4A8mKSaufQ-gQ1hoKXDPhuBul5y4_wbDrESVpmsw7zbYMU6ZBtoIgu4OdZtTEGKZi8Gg09cOGCUYsnHjsPEvLAypGL3gKGyyM57nwKK3mvXlh5OjtkTNbwZ_492IkB3ORdpGGGKmYJ4Vj9fLdloe0F3duDFOao1M1B9UQFO88vbiDySt2PF-0hbXGz5zuUDYa3DDLBGuZtG7meXVeD7EGRidHRYkXFgrTU5kTA46OBd9ImHo5Y5VmkFdewXmxTRknkXs7mNLREUxpjPXcJdJ2aTFKcNJ2sBf2wv8gG6trUjYTBb9QPC7XeX7M9Vwo1bEdt6f19HrFB5fCgjpG_0rloxFkP1X3V70-q8TJUj2Jx3SC25dXwivF713TzPpN5xULh4y9lqP0MNGXGqO518V_dh2-uAgvVuCvLj-ACl__dEBpURaLo6VqNHQY_7uNnWjzlnbKre4gnJwsssMKk-bphVV2ssReXl8ni-vK2npp7_2bqypUYbICi3dh3rG1mte9ZSY-k9x8L1wSUXhCzhqGba-ZcY_A7J37RHdlXnML0D1Adzg0JDQ0NE1o2tBoJvAuwCE0e4xbNUKhTZTec2L0CBsmCeOx17a9iHBgGWomeHfAZU4nuJngA49IUVUfOqgoj50MHXGZOzzzH8x_7DqmudvcsZgZynb2CtVqvrkkt8TqS6q5Sh36R3tpb_eDcHydSq6SieDX6e11snmBfOmho3N5GbyjC3WdbK5bNeLS7B4LfMXqnpOGi-463VxRM9QkQ5eJ3A-PG8-9dR9mi0NDVC8t00w-hf4G2y4O2QGLCAdzJA_mZMAOjFDfaXGYKdMSygTbRGw0l5GB1sLqLmDWtRG1XRuAHIGWLQ_IWGwZk75jRv2GkGYzoi7UkjFENV3bjPgkKjNxwkycMKNFM7Y_lOGR78S0sZoTG7AlsT2kYZIE05f5TnjYR6UDpmwEfQA11pHE5YAD-yBxp4KJoavbiIYumNuRAYs-opofgG2x5F3sMvEUUYtHqZa1ERneeh93Le8MadXADj1hggrTEIYNi3ggI3VopCaCd7vmR3MgPbWYkB8_foyEH65PFT3p_1BxnDfcJYkbgjWlQkk2pTeiN9sj1botu8YTXE-wOWLit9KxoyRt1XAkNC1rOd0dCWNaQud8kLUd5vpIMM9ywj7QMDu7wS0oiZ011QVfnsjWc-5xiiptAizzEdVhte0xwZHS4tRvv7M9fopcIdx9iHRfB331Y-w-jv1daIMMCTIkMIUS3BMWmiY0reoiGFsfxp5yGXQ1QUlTNy2XAW5jcyCMvNspGEc5ic-MPSe1ag-oO6B9RAS3Co-YNyOK26SDOlTfnhMZFvaeu0QHtOXSSiuOnQ73I_-2izrGeB_Dp4wNjS2LbQjxMdh4NLFhkc3E4ZAqa3yV7Yc4OUOcnWGSM4efWhzxdmwPw3Eih8dNbEe6JCOIxodHeeCJhePQKG_GdpQzBzkzykX3h-j_INIExSkaRFpm1aGDkrwacYYW5aGTJ8tyxEWKRlgWRXagV-nSDSAYX6nG2wuQrO5V22KX9HWNyaPVmLAzDoDcO9_aEI0t2QK0Zk9ug1tTzMXzrO-M1Qy3s7rnwqtx7WxDhgMWYmjDLYUjuTyvVWehZrQnjM6FgLNZh41hBmTv3AFhNjBileZ758p_rr785cNffnNv_H9VPUALzSC2lrWd5XIDrYKd5tJC1VuIYc0tUZTBhgs2B8nq25Yb6P4kpgM3uBYMYgO5hS1-hsSVJaTcdAI_w06rWrDWzOGHBiSrZ9XDL-9XHz_-FT5haZ0li41l8OPH758mhrSxs61P4T18Vj1IVgRL2ChNmHOq6y184nYL7ZZBUCazBqAFVJ3lSs7D-63qwnno55PsUjppeA3Q-pvG0jRKtwag9e-Wu1eX9VeCBdbvByV6Z_D9rsPSvWOTrgPZCuUJcpb9TZFXlq1Atvp6__77yHkvGJb-FgdkK-I6fQdQBdDSCa6MYdopdpFhIR5UA1D1YQay971hbsP0nOEsA1D5QTp-Rr8y68841XcsegYBWv3ub5wWd-7I12sJJ5zuhGAxl04bwcaC7P6DNFb3xFkG2XuAqt-9maU7E7oa97dXJUClvzBj7hlKIT8KQbNVvaBQSfEMawZ7wyisn6csrmaCC9CvHIRor13FMZcZ4yy7Y8YCNpgLRt1Ufv74fvX1PTR93XJfjP0GatYp7Ytna21nXB7RGqD1htttX8-Jak-nc9Zp9V_MvcKsuTG9O9KsIZbOeyJ6ynwZEY3NFh4WrLP91WLyCGnfduGaLpmHM_tnrTYatxDrTe_eMM0vVtqfvZzT6NeXXkqXTcfpktv0Mkwnqs5ksnupZty9JgqGBzbzK4vO3NSB7E6qI-vZkK-MpZs8JWGraC9YKIfR0XBhil7w6E91w_swxuiLKRgPB9pklyRJUhZZXqb5Ml0wNFmN5tkE8Nntc36ev_ltGlVHJo2fHlSYOl_499CfgNwyqN5gtgG6S3ZZ1pQLhlyOQyDpaSAVq1BzLZAvvfzKNxKLf8OSisM28ca-ZpU7ko--onNflyWBJ14BVMUcBrKJm2bi_wctWdSySMpkUSd5kaEkhhE25V1VPpT59I7eDZC5UfPSO-ZFjm7lpwqXrE4JfHjo7FYzTB8euRAPvO3CHS72xTQHaC0797a1nrLNCchWeQ6y1aKMyoufUe4qXGLxqtqF_85iTEJ5Te1U5lVd1XKqa3GeUFQyqDE3zCsxfiYAWs9979lQ5t7s150y3E265_Rq0QJkqzHw6lQrqqqmgbh2G7PXY2mYLU8KXqUuzCi-vBBPa_ggxYNQmD5Q1WIepoH7l961I7dmQ3DQlaYL58zSv0tlaXKqLauLZPFrNeNFQs04hSfLLimbhiXNLz_N33LxobLMWdIcPT5ZfAmiVYZ8CrBU8rlVvYESt8x0fpdbBm9_Y5JpbBn98u1-y8hj3Ev--5Ie4vmoVPd93JLPlq7zITvxIcuygiWTrJ2If8Ymmuu0IswYN3qy_wbC6q0TiZZVwZJjIvOzIIqGpX87CN3LD20nTgJYH56_5dsHgRuWHoMozoIoC7L4qSBeDuB-Ir-SWDwbbj5hiTeu9u-vCLln9D8g8Logk4VbTgIvmiRrKlJMHKfMYi7isx8b80lRJq67fxLwZcL-UD7c3__NRDc4r0hxzPPi5FmPFqxJ8MRvn9vXfP4nS1-WsqxJ8DF_1Wmd5igp_ow6fbO8_5PNV4MXSTEp9-VZudMqJRO_P_mT0Dc1-uimYUVxZ5W-noEg8EvxR5F_ULWiKiWH8FFytquyRfVr1TrGe_-TSfsDWXmp2P53p7rB2aI6FhpKzwuNNvQn1ve1_P5_TpurUNrQY96mr78FW7A6XU4rVPe-vD7zjgkuT8_5X63mcvOFNdfK8yIB3_y3458w2Xo9q2ujH3mtsX7-IBsVXgrPuZQS_-GvMddcXFHydw2_EM5Ka_zsqNMZ8zkR_YbLyz3-yG8sDbTDhVJ2H34IN02j03Xn5s0d80t_xrh8cqjOPlil4l4Rovj38PXki1zfmeYNZ3rkq93IL7dvWo6LIkmXk1WcnVYjrfOUQdXZT-5U-5Z-5EmesqMfZ1cfCKcEw4cHd_R9MBZr-0CwEA-HwzYx_eVFQLxluCY037ojfQ6yVRYtFucWUVVDz88lt-dGAnSaZ15zONv7n2-ieKhE5TWNJzFcc_-q5ixfgGxVRMWLs0lKyaKAQeWbzlFWkkWslVWt4m14RZRm_q6Zjbva9PuiZPWborUSFgouH0G2Or_6DqNzpTcArfcArbXcm4ZluAnia9VLCgeOYdPv90w7k_ewizfZNWuceX-NG17MnAc39Dajy2yJb9htusiqrEDVMr3Z3rIyXVRZRWhBaNOwFJcYlSlqWJojnKf5Db9FCSqSNEvTZV6l6TwvcpKlZY4xTbOkakCesBZzMXeJcl7f-Jv52xQVaJHf-B8zGf_DYYQke4J-FCAEinc3-tZnt-43BuSJ4MaaoxrLrfC_OD45sYHi3b--Vzl-r3LTa3H7x787iZM03KL_CQAA__8Sik_Q">