<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/139103>139103</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[MemorySSA] Assertion `!Paths.empty() && "Need a path to move"' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
llvm:optimizations,
crash-on-valid,
needs-reduction,
generated by fuzzer
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
dtcxzyw
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
dtcxzyw
</td>
</tr>
</table>
<pre>
This is a recent regression (llvm version 37fecfaa63eef7bd9dff9c16d74e61c99e3ce70a).
Reproducer: https://godbolt.org/z/9MGhvsKPb
```
> bin/opt -passes="loop-mssa(loop-instsimplify,loop-simplifycfg,licm<no-allowspeculation>,loop-rotate<header-duplication;no-prepare-for-lto>,licm<allowspeculation>,simple-loop-unswitch<nontrivial;trivial>)" test.ll -S
opt: /data/zyw/llvm-project/llvm/lib/Analysis/MemorySSA.cpp:783: {anonymous}::ClobberWalker::tryOptimizePhi(llvm::MemoryPhi*, llvm::MemoryAccess*, const llvm::MemoryLocation&)::<lambda(llvm::SmallVectorImpl<{anonymous}::ClobberWalker::TerminatedPath>&)>: Assertion `!Paths.empty() && "Need a path to move"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: ../llvm-build/bin/opt -passes=loop-mssa(loop-instsimplify,loop-simplifycfg,licm<no-allowspeculation>,loop-rotate<header-duplication;no-prepare-for-lto>,licm<allowspeculation>,simple-loop-unswitch<nontrivial;trivial>) test.ll -S
1. Running pass "function(loop-mssa(loop-instsimplify,loop-simplifycfg,licm<no-allowspeculation>,loop-rotate<header-duplication;no-prepare-for-lto>,licm<allowspeculation>,simple-loop-unswitch<nontrivial;trivial>))" on module "test.ll"
2. Running pass "loop-mssa(loop-instsimplify,loop-simplifycfg,licm<no-allowspeculation>,loop-rotate<header-duplication;no-prepare-for-lto>,licm<allowspeculation>,simple-loop-unswitch<nontrivial;trivial>)" on function "func_137"
#0 0x00007ffff7dfebb2 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/zyw/llvm-build/bin/../lib/libLLVMSupport.so.21.0git+0x1febb2)
#1 0x00007ffff7dfbd1f llvm::sys::RunSignalHandlers() (/data/zyw/llvm-build/bin/../lib/libLLVMSupport.so.21.0git+0x1fbd1f)
#2 0x00007ffff7dfbe64 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#3 0x00007ffff7842520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x00007ffff78969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#5 0x00007ffff7842476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#6 0x00007ffff78287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#7 0x00007ffff782871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#8 0x00007ffff7839e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#9 0x00007ffff3f85027 (/data/zyw/llvm-build/bin/../lib/../lib/libLLVMAnalysis.so.21.0git+0x385027)
#10 0x00007ffff3f88c30 (anonymous namespace)::ClobberWalker::findClobber(llvm::BatchAAResults&, llvm::MemoryAccess*, (anonymous namespace)::UpwardsMemoryQuery&, unsigned int&) MemorySSA.cpp:0:0
#11 0x00007ffff3f898cc llvm::MemorySSA::ClobberWalkerBase::getClobberingMemoryAccessBase(llvm::MemoryAccess*, llvm::BatchAAResults&, unsigned int&, bool, bool) (/data/zyw/llvm-build/bin/../lib/../lib/libLLVMAnalysis.so.21.0git+0x3898cc)
#12 0x00007ffff3f8b01a llvm::MemorySSA::SkipSelfWalker::getClobberingMemoryAccess(llvm::MemoryAccess*, llvm::BatchAAResults&) (/data/zyw/llvm-build/bin/../lib/../lib/libLLVMAnalysis.so.21.0git+0x38b01a)
#13 0x00007ffff4f91e6a getClobberingMemoryAccess(llvm::MemorySSA&, llvm::BatchAAResults&, llvm::SinkAndHoistLICMFlags&, llvm::MemoryUseOrDef*) LICM.cpp:0:0
#14 0x00007ffff4f99055 llvm::canSinkOrHoistInst(llvm::Instruction&, llvm::AAResults*, llvm::DominatorTree*, llvm::Loop*, llvm::MemorySSAUpdater&, bool, llvm::SinkAndHoistLICMFlags&, llvm::OptimizationRemarkEmitter*) (.part.0) LICM.cpp:0:0
#15 0x00007ffff4fa223a llvm::hoistRegion(llvm::DomTreeNodeBase<llvm::BasicBlock>*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::TargetLibraryInfo*, llvm::Loop*, llvm::MemorySSAUpdater&, llvm::ScalarEvolution*, llvm::ICFLoopSafetyInfo*, llvm::SinkAndHoistLICMFlags&, llvm::OptimizationRemarkEmitter*, bool, bool) (/data/zyw/llvm-build/bin/../lib/../lib/libLLVMScalarOpts.so.21.0git+0x1a223a)
#16 0x00007ffff4fa72e0 (anonymous namespace)::LoopInvariantCodeMotion::runOnLoop(llvm::Loop*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::TargetLibraryInfo*, llvm::TargetTransformInfo*, llvm::ScalarEvolution*, llvm::MemorySSA*, llvm::OptimizationRemarkEmitter*, bool) (.part.0) LICM.cpp:0:0
#17 0x00007ffff4faa26c llvm::LICMPass::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (/data/zyw/llvm-build/bin/../lib/../lib/libLLVMScalarOpts.so.21.0git+0x1aa26c)
#18 0x00007ffff66887f5 llvm::detail::PassModel<llvm::Loop, llvm::LICMPass, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (/data/zyw/llvm-build/bin/../lib/../lib/libLLVMPasses.so.21.0git+0x887f5)
#19 0x00007ffff5018914 std::optional<llvm::PreservedAnalyses> llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::runSinglePass<llvm::Loop, std::unique_ptr<llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>, std::default_delete<llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>>>>(llvm::Loop&, std::unique_ptr<llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>, std::default_delete<llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>>>&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&, llvm::PassInstrumentation&) (.isra.0) LoopPassManager.cpp:0:0
#20 0x00007ffff5019c80 llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::runWithoutLoopNestPasses(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (/data/zyw/llvm-build/bin/../lib/../lib/libLLVMScalarOpts.so.21.0git+0x219c80)
#21 0x00007ffff5019e3b llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (/data/zyw/llvm-build/bin/../lib/../lib/libLLVMScalarOpts.so.21.0git+0x219e3b)
#22 0x00007ffff66886d5 llvm::detail::PassModel<llvm::Loop, llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (/data/zyw/llvm-build/bin/../lib/../lib/libLLVMPasses.so.21.0git+0x886d5)
#23 0x00007ffff501b958 llvm::FunctionToLoopPassAdaptor::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/data/zyw/llvm-build/bin/../lib/../lib/libLLVMScalarOpts.so.21.0git+0x21b958)
#24 0x00007ffff70ad865 llvm::detail::PassModel<llvm::Function, llvm::FunctionToLoopPassAdaptor, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/data/zyw/llvm-build/bin/../lib/../lib/libLLVMX86CodeGen.so.21.0git+0xad865)
#25 0x00007ffff3909a1d llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/data/zyw/llvm-build/bin/../lib/../lib/libLLVMCore.so.21.0git+0x309a1d)
#26 0x00007ffff70ad135 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/data/zyw/llvm-build/bin/../lib/../lib/libLLVMX86CodeGen.so.21.0git+0xad135)
#27 0x00007ffff39078d0 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/data/zyw/llvm-build/bin/../lib/../lib/libLLVMCore.so.21.0git+0x3078d0)
#28 0x00007ffff70adaf5 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/data/zyw/llvm-build/bin/../lib/../lib/libLLVMX86CodeGen.so.21.0git+0xadaf5)
#29 0x00007ffff390857d llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/data/zyw/llvm-build/bin/../lib/../lib/libLLVMCore.so.21.0git+0x30857d)
#30 0x00007ffff7f9ba9b 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) (/data/zyw/llvm-build/bin/../lib/libLLVMOptDriver.so.21.0git+0x23a9b)
#31 0x00007ffff7fa58ed optMain (/data/zyw/llvm-build/bin/../lib/libLLVMOptDriver.so.21.0git+0x2d8ed)
#32 0x00007ffff7829d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#33 0x00007ffff7829e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#34 0x0000555555555095 _start (../llvm-build/bin/opt+0x1095)
Aborted (core dumped)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsW19z2zYS_zT0C0YaCpT458EPtGK1mdq1z3Lbe_OAxFLCGQR4AOhE-fQ3ACmJpOTYSuOZ1JeMM5JIYLH7298uFgRItGYrAXDuzS48jKnJP3_ZfPIw9mYfzkht1lKdtxfPMkk35_drphHTiCAFOQiDFKwUaM2kQB6OOX8q0RMo9zuICsgLQsIAoIgymtCiSPJJSKMphJM8SSDIIfKJh5Ox56d3UClJ6xyUF6RobUylvSD18MLDi5WkmeRmLNXKw4svHl4k17-sn_Rvt5nnp17ot39-6gWXKGPCwwtZGTSqiNagveCDhzGXshqVWhOrqP3OhDaalRVnxcbDc3dt-zsvVvYSy0svmAs5IpzLT7qCvObEMCm84HLbRUlDDHjBfA2EghrRuuIsb1tdCDmqFFREwaiQasSNbLs2oo_LdVrAyImvhf7ETL52egij2BMj3Asudt8uPZx4GCMD2ow5R6Ol56eyMhZGDy8oMcSCZv26sA4aVUr-B3LT_rQfLPPwIhWEbzTTHl5cQynVZrlMx3lVeUEaxYGTFl0QIcWmlLX2og_WPUE65zLLQP1F-KNznRekRm1uKsNK9gVu16zlRXOrkeyuph6eo-GdNM9B6_ZmLoU2B02uZAsuDq3l7o4XzDkpM0p6gy1LwvmfkBupPpYV94L5ay24B1UyQQzQW2LWDuNmsEuLQ6o1KOM4H_oentg2egxlZTYejj2cINc8RB7GvwNQRFBFzBoZiUr5BDa-cIQKwjhQS_3bq8t0eYl0nZXMIIKyeoUUVFIZ22UQCsys62ycy7Ljv75XmdY1WDciIihiIuc1BWTWgHJF9BplJH80iuRgx14akj8iWpfWz56f-mPk_t0quVKkRESt6hKEsRqg8Xg7WlYzTj28OBZr7znQ-lE2acG6q4VgYoUsBNbpRS3yhqLxewajTTxSoFLSmoM1vcXHctxP8TP4vG9QHCJbCmzp8DAJogYU5OHAR_5n3_f9qCiKIqIFZBnuJDq90c2XW8WEcSF6bwO2l90U-fQgtVFASpdu5ogJ0ySf-Gje78dsE8su83OWXV39eb2sK5tzxlqO8WTsr5jx8IX_eeK0s5Y1uk8Gumd0UhzT_a4WS7YShP9KBOWg9C43fmf1rAJ79fBQPQinqKeIh2OH1BxptmKikA-mnXCeJKPua9L20O0E6Lv_zQBBb4B4imfYb41q9P0chw_hdMSZqD-PVqJubuRW8dCp7LrsNZ72BSZhUuSoMmsFhD48Ms5Pk-7676XPhupOoxCttDPvVLWnUbgXHPYF4zgqAkQyO2udJNZ13IuNDsROspMFTrK9wLgvMEggCU8T6LrsBSZdgUERz3wcnc7qQ4JvC7AhwwM3QjO-jT9_MH6cB46Au8oGCVKCrlzCSJ6tcQomaHu5l1cuiMnXaXoHuuZGt6nlq3XaC2P_UX0iiuqm479qUJtWaC3c8oM2icsijIaV5zbwrN2Tgd1JnOcHii2X6RGLL4iG5vIKTHuHiVXXFtfksFTtGfoCSAf2zFEmJd9_fkPyO4UmFpA9TfAArsyfkOfhWj6yagm86DLkWaz-Fk5vDII1cw9CL1lPi2QCIUGn2GUBGobACxGyZOIxFfRXybS5-ji_XnCyei6O_tBwoz5A0c46tvkR5k8HViT-bNYRlRNhx7xRbsiPQpueIfaCqvPdmqmrRceKgec-SLcCkupeARzcvZKyemYJt1ymf1SUGJtWejFwKkLtGtIVY3dQEvV4WTLj5KYtjcYVUWbsfwW6WR86gnHQjYK1VeEOVm2x3rXe2v27pNDkjnnX_ZrlF1zmj67iS1-LqMXsoyjkiVCnWtdlZUGYk3x9eP-eqBWYK5YpojZH5Z_irI6TcsKJunySvG6oMxDwcb6wgpekAHN83O_h5jdJoY1pN5U5yB8TR5B9_ggH9IkwvDjXNn5-IooRYeaSwrVs1hOuaq_FjWgcEr_goR-QSU2Le0WELqQqj3v9Bd508mr6LUx4ZeBHA88RHHarBdvrlmi988oRfwxzZTvnXBNBVnaOnA87DH20NERQoui2Z2fGaB8pndCj3_b2uhu3bx4VFr19VPRK6jCM46jozkcUDGG8XcESra8lBf4SXFt_vC3k3wdv9xjwJ20a2ty6535DyjhO7BnTWzPN_EmcTKZIG9qoJV1SIn2O3CrQoJ6gNQq0F1x2THHEehWkPz6JlkysODTp6IhyO5xqwf5bw0Nl-kYM420uRQ6V-cfC0jWZQkFqbh4ocDDwrs3e_T2TUn7S4P-IBv-gWWQ-yMrNerMEYTr7dK5oY1qRtmiTsupk8MP6DfuDGSPJY_-dpv-_mFnL2lhZv4M2zYT6s7B4vh7Fjg276gJPhlyBIHunXPlJi6_SAoJsTws8XKaE9O8uU94Dlf4hav5k_EsrrJDuV1g4GOTALJnFHb0W7X70vdxOvSkllZHqOM6L3QmGE7Deddqel3nrcLc27hHo76P6hMbhaeG-N3r-KuS-CZjnmP3jIP7vOJxLCr-AGCLuIN0D3nu2HiR-Qib0FbnyOMzvB7-5VHCwL-XA2UMXDrk6Cb4HV98M8nfqqq9RfRJ0qB4NqB7FtLsauXbnn-7lVskX82vT4SQA2i5vz1Rr297yeMhUcuKz3q2p81fi9Q2APEe0HwPlr5GMdB6S4mRAsngWvSafHgP4PeB2nJ0WlB1kg4N0RZKRpLvyU7Wj1i2rgDPRP9-xNIqJ1R0Ux6h5YHuz83VN8rWT89LOmTtvfNBKSn5Tm6o2C8aPCPlbt58xJ1WKbOzV3qN1iwmvV0wc5vZ9-93Dt91x1mD-JBlFPRitrAvr1G3Fe2zGkJV5MFK2eaKx4jcm6Nda_QmKFQzUtl1_H_i1n99-3vCmMh8UewJ1UHcGJNmvMgfnIQsyi4EiWZlrwsQbDE5j6PAfD07LJTQ58TCi67IXGAwFwtRHDw-2z4M2RJmHcm_Xq4eAaWeIbZ0-2_7zkxlqhLunhM8fMm82I_2kzZlpJpUBx8dcKnCn2HfgbF8KOaPnAU2ChJzB-SSahhH2Z3F8tj4nmALMgmxKQpLFEYFJHoMfTqdTMs2DjJyxc-zjmT_z40noJ9NoTCEjUZHDdAZ5jouZN_WhJIyPrbZjqVZn7uj9-SRIJn5wxkkGXLfv1rQsl50tbu1eBJh7GLtz-SMpRk-EM7q7LACoHimg28M77fUVCFDEWp5tUFF_-WJDz72zo85b4Fbam_qcaaP3yhlmuHvVZ78DP_vwfV9mOKsVP__2FxZa4J7O8f8CAAD__8VNazA">