<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/60149>60149</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [licm<no-allowspeculation] Simple IR test fails with 'LLVM ERROR: LICM requires MemorySSA (loop-mssa)'
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          TatyanaDoubts
      </td>
    </tr>
</table>

<pre>
    This bug was found by Azul FuzzGen IR test generator.

https://godbolt.org/z/x73G7z9Mc

Run opt with -passes='licm<no-allowspeculation>'

Stacktrace:
LLVM ERROR: LICM requires MemorySSA (loop-mssa)
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/opt -o /app/output.s -S -passes=licm<no-allowspeculation> <source>
 #0 0x000055a3523ad89f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3a2189f)
 #1 0x000055a3523ab264 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f9407c91420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #3 0x00007f940775e00b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
 #4 0x00007f940773d859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #5 0x000055a34f583906 llvm::SuffixTree::insertLeaf(llvm::SuffixTreeNode&, unsigned int, unsigned int) (.cold) SuffixTree.cpp:0:0
 #6 0x000055a352302d6e (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3976d6e)
 #7 0x000055a35208c0b5 llvm::LICMPass::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x37000b5)
 #8 0x000055a35274afb6 llvm::detail::PassModel<llvm::Loop, llvm::LICMPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3dbefb6)
 #9 0x000055a3530c7c9f 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&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x473bc9f)
#10 0x000055a3530c7e8d 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&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x473be8d)
#11 0x000055a3530c916d 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&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x473d16d)
#12 0x000055a3530ca3b5 llvm::FunctionToLoopPassAdaptor::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x473e3b5)
#13 0x000055a3527480a6 llvm::detail::PassModel<llvm::Function, llvm::FunctionToLoopPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3dbc0a6)
#14 0x000055a34faf6be4 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x116abe4)
#15 0x000055a351b0fa7f llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3183a7f)
#16 0x000055a34fadd9c6 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x11519c6)
#17 0x000055a351b0dbaa llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3181baa)
#18 0x000055a34f6746fa llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xce86fa)
#19 0x000055a34f58ebc3 main (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xc02bc3)
#20 0x00007f940773f083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#21 0x000055a34f66632e _start (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xcda32e)
Compiler returned: 139

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWdty4zYS_RroBSUVCPD6oAdFtrKutROX5c0-qkCiKWEDAQwu8eXrt0jKNqmxJ3aiVE1mpsq2TBA46D590FSzuXNyqwHmKPkBJWcTHvzO2Pkt9w9c8zMTSu8mpREP89uddLgMW3zHHa5N0AKXD3jxGBRehcfHH0HjixvswXm8BQ2We2NniJwhsuj_7rxvHGILRFeIrrZGlEb5mbFbRFePiK7uM_Zj9lhcVcNFN0Fj03h8J_0OTxvuHDjEzhDNlKz2iC21mXKlzJ1roAqKe2k0YueIZkOUtefVr97yCtr9u6HLy1-u8PnNzc83iC3w5cXyClv4LUgLDl_B3tiH9XqBEc2VMc107xxHtOiXXl-eL9bn2IVyLz3mHSkWGmM99gYfuSn9LpSzyuwRXSn1-9PHtLHmf1B5RFfSuQAO0RXmWmCpKxUEYL8DXFnudrh8sn02cAaLsG-enSEzRIpra7aW7zG327AH7VsjMKIr07S7VGbfSAV2CveNMhZsO6a43k5bTm3Lm5t6G_SviK5KqfuFeGpaCN407XXwTfAzh6frQSg-GweM2NKZYFviz3tbMaKMYHJPCCFJwllCGRd5UeOOHbZAbOEeXP_PtZXad_7edsGj-csky-82xnkLfI9oiugSS-0RLdqY_UWvEf2B3DNOo7yon6Pe2h0d2V3SNMZrudVc_YtroVr8_GBGP-xmVdPGiXS_z0D0AJTVRUyyqohiSvBmY8F5Y2Fj_cELJcv2ZOTpJo2nSupwP93q0N9o_M4CFzNnZqSzOIpjSkb2stE2WQKElNhy6eAd-FWLnHbIMSOkHCHHY2Qm8qTAvDTvsnyATGmeFCPkZMBxXCc5K0g60MY61LW8v7UA_bXUbRwvgdcjdbxM-8kIOAgk6C7ZiV4px9edcmaVUaIL3zPA6xFMx1IgVKRwMukVWSpSGNGSjfYjeUXKZEBLm8CuuTucGxv0iI1LY5oDBy-DC83Vg5Puimu-BYvY8njBcHY7svZcC27F08obcEF51yK3KTf90Irx3Our_zSC-5al9JSHOCOElMmIyXzEZBbzuhwKTIDnUh3yD3fuyghQf0TOE_uj0WsLDuzvcPAe3N_M_2nIZ-ffNTTWkCihLtORhoqhhhipsqqosfOit8Q0LR4fq-ZTNbDzoVhaqb2LxS9fN2uptwr6dPSKcc88BS1_C7Bp_NiJ4xO4NLqCxv9jaRm6LKDmQfmNAAUevmq3n3_eyCLfZfANyeAf9OBYHmXlC-287Sqqvqo56cMlzlhZDaqMtsggxw8XyMVX-qT4r_Q7E3yL9RM4f90Xld-_dhyUAbkYKSM6UkYRpV-rMr6L4CACEaVjEdAjEXA2qgRXQVct5K1pHWglsRC88ca-Tu3T9A_R-7zoQNsp_QU2qNdaf9lRvZYT_rF67cXF5bt4OlURN2TpLWV_WfQzUVaEpyP649H7GF6nJcQnoP-tXPX67A_Q_O1GL4pSXkI8it7wbVoSlaTm2fBN65URQcGtebLpD9NFv-BD_h6WnFyrUc54Nv7mlI61KkRRfSxVPLm3fCdHpxLbC0dvSe3LIT6KkqioxkkiO5KZKDl_x2F_je6vhSYW5VHJ-YimfKTPNIvTekiTDZ24rmUDSupxu2PtrdTbG6hfE-cn_t5yuwV_xatdh7N47e6lLC23Dxe6Nhf7Rn06yxj1c9fyWUn1Cshfuv2GOwtr-UM7Onpz1nKiwlbqT_K7afzGG3M40_1-_5ZafG7WL2BlLcE-zSvbO-_-PJk-KsjTeiyP4qj1AWXF8J5LfbI9CS0rNtyTkqNGTk1yhjcbJctq4zy3fjMw4L1NnZjk412isfDTlFHAPf7JfBOc0ZeeyfKAhC34YDUIxBY4Yoe7EzFnomAFn8A8SrM4ilNapJPdPKqLKKMiFSyhcZLUWVYTTgjhnGQR59VEzimhjERREaUsj9JZXaYZS8uqKBiLQMQoJrDnUs1a_c2M3U66Bu88JVFcTBQvQbmu206phjvc3USUouRsYuftmmkZtg7FREnn3QuKl151bfrPNFyTM7yW-0bBcyu-5lK5vnuOaPbnmt40mwSr5n--sd25_v8AAAD__3ZPNLE">