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

    <tr>
        <th>Summary</th>
        <td>
            LoopUnrollAndJamPass crash: GenericLoopInfo.h:146: [...] Assertion `!isInvalid() && "Loop not in a valid state!"' failed.
        </td>
    </tr>

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

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

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

<pre>
    llvm commit: 6805d7e8aa5f

Reproduce with:
```opt -passes="loop(invalidate<all>,loop-unroll-and-jam,loop-unroll-and-jam)" bbi-103085.ll -o /dev/null -S -unroll-and-jam-count=4 -mcpu=cortex-a55 -mtriple=aarch64```

Result:
```
opt: ../include/llvm/Support/GenericLoopInfo.h:146: const std::vector<LoopT *> &llvm::LoopBase<llvm::BasicBlock, llvm::Loop>::getSubLoops() const [BlockT = llvm::BasicBlock, LoopT = llvm::Loop]: Assertion `!isInvalid() && "Loop not in a valid state!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: build-all/bin/opt -passes=loop(invalidate<all>,loop-unroll-and-jam,loop-unroll-and-jam) bbi-103085.ll -o /dev/null -S -unroll-and-jam-count=4 -mcpu=cortex-a55 -mtriple=aarch64
1.      Running pass "function(loop(invalidate<all>,loop-unroll-and-jam,loop-unroll-and-jam))" on module "bbi-103085.ll"
2.      Running pass "loop(invalidate<all>,loop-unroll-and-jam,loop-unroll-and-jam)" on function "test_it"
 #0 0x0000564cc1e14ac6 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (build-all/bin/opt+0x45ceac6)
 #1 0x0000564cc1e1250e llvm::sys::RunSignalHandlers() (build-all/bin/opt+0x45cc50e)
 #2 0x0000564cc1e15379 SignalHandler(int) Signals.cpp:0:0
 #3 0x00007fafbeb0bd10 __restore_rt (/lib64/libpthread.so.0+0x12d10)
 #4 0x00007fafbc4ab52f raise (/lib64/libc.so.6+0x4e52f)
 #5 0x00007fafbc47ee65 abort (/lib64/libc.so.6+0x21e65)
 #6 0x00007fafbc47ed39 _nl_load_domain.cold.0 (/lib64/libc.so.6+0x21d39)
 #7 0x00007fafbc4a3e86 (/lib64/libc.so.6+0x46e86)
 #8 0x0000564cc274b6cb void llvm::appendReversedLoopsToWorklist<llvm::iterator_range<std::reverse_iterator<llvm::Loop* const*>>>(llvm::iterator_range<std::reverse_iterator<llvm::Loop* const*>>&&, llvm::SmallPriorityWorklist<llvm::Loop*, 4u>&) (build-all/bin/opt+0x4f056cb)
 #9 0x0000564cc274b42e void llvm::appendLoopsToWorklist<llvm::ArrayRef<llvm::Loop*>&>(llvm::ArrayRef<llvm::Loop*>&, llvm::SmallPriorityWorklist<llvm::Loop*, 4u>&) (build-all/bin/opt+0x4f0542e)
#10 0x0000564cc381dfce llvm::LoopUnrollAndJamPass::run(llvm::LoopNest&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (build-all/bin/opt+0x5fd7fce)
#11 0x0000564cc328d01d llvm::detail::PassModel<llvm::LoopNest, llvm::LoopUnrollAndJamPass, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::run(llvm::LoopNest&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) PassBuilderPipelines.cpp:0:0
#12 0x0000564cc34ff5ed std::optional<llvm::PreservedAnalyses> llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::runSinglePass<llvm::LoopNest, std::unique_ptr<llvm::detail::PassConcept<llvm::LoopNest, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>, std::default_delete<llvm::detail::PassConcept<llvm::LoopNest, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>>>>(llvm::LoopNest&, std::unique_ptr<llvm::detail::PassConcept<llvm::LoopNest, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>, std::default_delete<llvm::detail::PassConcept<llvm::LoopNest, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>>>&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&, llvm::PassInstrumentation&) (build-all/bin/opt+0x5cb95ed)
#13 0x0000564cc34fe8e5 llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::runWithLoopNestPasses(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (build-all/bin/opt+0x5cb88e5)
#14 0x0000564cc34fe480 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&) (build-all/bin/opt+0x5cb8480)
#15 0x0000564cc327a8bd 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&) PassBuilderPipelines.cpp:0:0
#16 0x0000564cc35001a1 llvm::FunctionToLoopPassAdaptor::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x5cba1a1)
#17 0x0000564cc327eedd llvm::detail::PassModel<llvm::Function, llvm::FunctionToLoopPassAdaptor, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) PassBuilderPipelines.cpp:0:0
#18 0x0000564cc2035a27 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x47efa27)
#19 0x0000564cc32846cd llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) PassBuilderPipelines.cpp:0:0
#20 0x0000564cc203a5fe llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0x47f45fe)
#21 0x0000564cc327c19d llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) PassBuilderPipelines.cpp:0:0
#22 0x0000564cc2034717 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0x47ee717)
#23 0x0000564cc320468c 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) (build-all/bin/opt+0x59be68c)
#24 0x0000564cc1dd7712 optMain (build-all/bin/opt+0x4591712)
#25 0x00007fafbc4977e5 __libc_start_main (/lib64/libc.so.6+0x3a7e5)
#26 0x0000564cc1dd532e _start (build-all/bin/opt+0x458f32e)
Abort
```

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWl1z27rR_jXwDUYaEPzUhS5kO3rftMetx_bpudSAwFLCCQSwAOgT__sOSMkUadmWU-c0cTujDGMSWOw---wuvphzcq0B5ig9R-nlGWv8xtj5Vn5hoDZGbUGflUY8zJW632JutlvpUbzAWUFSkUPBWFohskBkcQO1NaLhgP-QfoPi8A5lpPuZ2uNJzZwDh-JLRKkypka0kPqeKSmYBxRfMKVQ_AnRi_Bx0mhrlJowLSa_s-1zb2eIUlyWchKRmBTpVCk8MRjRpYB7RJe6CS9u8ajfhJtGexRfJniy5XWD4kturIevE5ameLL1VtYKUHzJmOWbLHm0Y2-qa5QfmYjIwtQtNtMpokupuWoEILoMyCG6vG3q2liP6PL_QIOV_Bdj6s-6MtMAVpRkoSs32nnsvAjC48U9cG8sii9C2zuM6ALFnzCiWSuzbRK-nDMX8OtfnjMn-bky_AuiF3jYOEDc_rEGf9uU4ZVDtEB0thsdpedt1zuM4kv8nNCdRoMWrfj0MhiycA6sl0bjAA2NpPvcuXo3FKIZohlGlIZOWBuPpcYMt22w84ERNEKUIprjikkFYorI4vqXT4vbT9g15VZ6zHDZrLGFgCv2Bm-8r11QhS4RXa6l3zTllJtt74TwmNTW_A48eEI614BDdImZFnjnMuw3gLllboNLxr94yziEsW8941-waLZ153kyRWR2bc3asi1mdt1sQfswPC4bqcQk0JkuS6kRXQ75_27k_xOYTxZRsPOm0VrqNQ42BK9VjebBvYgW7xjKbTQbjbdGNArCOAMDAx3Igh7T513zidF4b1-Q7cH5lfTd6BjRmGDylRBC0izhPIIoYTw7CAP34Lr_XFupfUubu0CigNVjI8v-WBnnLYRRsxBRUvsuMoqj_EH0nHxNUg6MZ0HPTpVopApNCRxT5abRt3Ktmfp_poUC6x7j8OXReEqgH42ORkvjfIYHclsftHZ0r92U1yFeSPuvkxLvpOQVq0ooSSkiglcrC84bCyvrcavcUskyS7pn7TcWmJg6MyWtahEVEekVSw5F8oSVKa2wZdLBU1k8SMk6AyGlVS8lHUrJAbIUs9Ic0-hACo0gS3sp2ViKiGd4pdVKGSZWwmyZ1FNulJiSV8SKeNaLzUcmxlBkLxuXQXHAlOLQdzRPyoyX-N5IcUAXVtegxQ3cg3Ug2tJwZ34z9ouSzg8qjPRgmTd2ZZleh2B7rFm2673atxh0aysE3dW5rpztfoex8b7C20ozrIO3W6bUtZXGSv9w1L6drNAtafZSXguXiqQZL3vIZ2PIEwrHIX8J6oW17OEGqqP6dZqN8Duhx58ER0J32SOkqkHajItIVBxGs4df23S80OIvbHvN3C552UYP7Ast_wbBxyNDFpqpByfdFdNsDcfYMZ4N3XqmBbNi37Ob2rk9qNmbegzbXl_9WodKZE8BK61EXvEDsAaJPaaFINEhbQR4JtWuzDDnrowA9cTeDqSxBU9A_r4Yvg-A-1nrx-BCgP08kAHstaxBSQ3jShlIMKi3cVJVKYh-dWDqMENhQ7dfW3Bg72GnU5hvfjrQpOXKSYj8-Dy4lXqtoEsTzxD_EatGy382sKr90JBxGF0YzaF-mvueBtKPC8-h2QIq1ii_EqDAw4c3_ehsYpQh_keJ_0JK_ETF4WKUrT9r5227t8C6BfcJkwlezlIQ_WQiHtURKCD9oEXhN-k3e45edxsu42TwM7HhdU8XBaS9p5Oxp5OCfFBPf3S_JgXp_ZoOlwM5K8q3LweeJpefnQs_iZofhLInrlqyAVdTQiIWHYhd7rZW70xQJshcCFa3mznHYFo-7jS_AarHTqdtVaS8ZBGL-nDLR-EGIN4Wbr3WFyeZ_k2WPcesd4LsRHcPNxZJnDKan5BmjiP0g5j-8sZWDhWjec-W2WivJsn4e7DluyH3IyJ-GtkoGZGNpdXhHuJVe3B0Z_byX80uXYc36b7rcipXqiSt-n09OtrXy3k0extX9hpfnGj2N9j1nKvfAawT3UxHbk7y6JSccgyb_7jJr-USyKM-l9DhUo2SJCv4wcC2aZ27x26g6623Uq9voDpGjicm3DG7Bn_F-KaVszj29RdZWmYfPuvKfN7W6mkrY9TfG183finVESH_1udnzDl6uNFiopq11E_zW9_-cQ_k8fQ6vmiPYwYwHlC08-CxrGlqv_LG7CK1s-KvUouXWv0DrKwk2H27Mnx58_O1qcyshKzgPaEGK8JIiDyPKDa1v2JSv3b8O4vyiPaiRuejszyHFK9WSpZ85TyzfrXdCX32UDJm-cFylWYj5dKYAu5kvaZbUcX7w6VFaawf3cU5E_NYzOIZO4N5lMf5LEvyeHa2mUdZDgWIqoqjMi9FVOWCsCTP41k2S6o4P5NzSmhKIpqTPC3S2VSkIi4LLiLC8oLnM5QQ2DKppsHRU2PXZ-09knlEkzQqzhQrQbn2QhWlGv7A7VdEKUovz2x7kWpSNmuHEqKk864X46VXMD92RNPdR0HxAr9weQil59PpFKWX3-X2zVlj1fzbb9jswLmf038FAAD__zy19zQ">