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

    <tr>
        <th>Summary</th>
        <td>
            Assertion `!L.isLoopInvariant(&Root) && "Only need to walk the graph if root itself is not invariant."' 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: f00f894d5d8
Reproduce with:
```opt -passes="simple-loop-unswitch" -o /dev/null bbi-69691.ll```
[bbi-69691.ll.gz](https://github.com/llvm/llvm-project/files/8707065/bbi-69691.ll.gz)


Result:
```
opt: ../lib/Transforms/Scalar/SimpleLoopUnswitch.cpp:140: TinyPtrVector<llvm::Value *> collectHomogenousInstGraphLoopInvariants(llvm::Loop &, llvm::Instruction &, llvm::LoopInfo &): Assertion `!L.isLoopInvariant(&Root) && "Only need to walk the graph if root itself is not invariant."' 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=simple-loop-unswitch -o /dev/null bbi-69691.ll
 #0 0x0000000002c70723 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (build-all/bin/opt+0x2c70723)
 #1 0x0000000002c6e39e llvm::sys::RunSignalHandlers() (build-all/bin/opt+0x2c6e39e)
 #2 0x0000000002c70aa6 SignalHandler(int) Signals.cpp:0:0
 #3 0x00007f9271a83630 __restore_rt sigaction.c:0:0
 #4 0x00007f926f1ca387 raise (/lib64/libc.so.6+0x36387)
 #5 0x00007f926f1cba78 abort (/lib64/libc.so.6+0x37a78)
 #6 0x00007f926f1c31a6 __assert_fail_base (/lib64/libc.so.6+0x2f1a6)
 #7 0x00007f926f1c3252 (/lib64/libc.so.6+0x2f252)
 #8 0x0000000002b229e1 (build-all/bin/opt+0x2b229e1)
 #9 0x0000000002b18d5c unswitchAllTrivialConditions(llvm::Loop&, llvm::DominatorTree&, llvm::LoopInfo&, llvm::ScalarEvolution*, llvm::MemorySSAUpdater*) SimpleLoopUnswitch.cpp:0:0
#10 0x0000000002b17db9 unswitchLoop(llvm::Loop&, llvm::DominatorTree&, llvm::LoopInfo&, llvm::AssumptionCache&, llvm::AAResults&, llvm::TargetTransformInfo&, bool, bool, llvm::function_ref<void (bool, bool, llvm::ArrayRef<llvm::Loop*>)>, llvm::ScalarEvolution*, llvm::MemorySSAUpdater*, llvm::function_ref<void (llvm::Loop&, llvm::StringRef)>) SimpleLoopUnswitch.cpp:0:0
#11 0x0000000002b17b6c llvm::SimpleLoopUnswitchPass::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (build-all/bin/opt+0x2b17b6c)
#12 0x0000000002fc97ad llvm::detail::PassModel<llvm::Loop, llvm::SimpleLoopUnswitchPass, 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&) crtstuff.c:0:0
#13 0x000000000353d5bf llvm::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&) (build-all/bin/opt+0x353d5bf)
#14 0x000000000353d1e3 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&) (build-all/bin/opt+0x353d1e3)
#15 0x000000000353c8a8 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+0x353c8a8)
#16 0x0000000002faadad llvm::detail::PassModel<llvm::Loop, llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>, 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&) crtstuff.c:0:0
#17 0x000000000353e8bb llvm::FunctionToLoopPassAdaptor::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x353e8bb)
#18 0x0000000002fc858d llvm::detail::PassModel<llvm::Function, llvm::FunctionToLoopPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) crtstuff.c:0:0
#19 0x000000000243cd05 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x243cd05)
#20 0x0000000000b0693d 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>&) crtstuff.c:0:0
#21 0x000000000244110a llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0x244110a)
#22 0x0000000000b0671d llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) crtstuff.c:0:0
#23 0x000000000243be98 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0x243be98)
#24 0x000000000078c88f llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<llvm::PassPlugin>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool) (build-all/bin/opt+0x78c88f)
#25 0x000000000079d62f main (build-all/bin/opt+0x79d62f)
#26 0x00007f926f1b6555 __libc_start_main (/lib64/libc.so.6+0x22555)
#27 0x0000000000787240 _start (build-all/bin/opt+0x787240)
Abort
```
This starts happening with 41e142fdc797
```
    Recommit "[SimpleLoopUnswitch] Collect either logical ANDs/ORs but not both."
    
    This reverts commit 7211d5ce07830ebfa2cfc30818cd7155375f7e47.
    
    This version fixes a crash that caused buildbot failures with the first
    version.
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWltz27gV_jXyC8YaEhRvD3pQfOlmGm80tjZ91IAAKKGBCBYAnbi_vgckJZGUZNldZ5q465FFigC-c_vOAUkgU-xpKuXjBlG12Qg7CmYo97w8SScsZMnIux55s3teasUqytE3YdfQpbk8irzmo0qLLktiDDej4HqEsRGbUvJLqVR5WRUGRtE1XEaXCo3wLeOP8F1UUqIsE5dRGqX-WModXIsefui2jlf_HoWAnaytLY3TAd_CZwUKVdkYlIcfzo72cAka_5NTCz9zIUEvfJvEXuxFIZwNcXHaiux833NTSXtoa_MTLHaeGo-dOJHB90KTwuRKb5yoB0ok0e6kdsQn8MMfrRvGtCxhqD_xHMBCFE9zq7-ApkqPgqvaApAZzL4QWXHwFpzfQGykhC6_qY1a8UJV5mNh7N80KdcO-mPxSLQghQXRyR7BNQFANMJXaH_VjdQVtUIVh40NWq6altRpOIOo6qY3GI_9T2NhekJBJvS-VwrO0mZgBAf8uZBPqOCcIavQNyK_IrvmaOWURiJHGgYgYQ2XORIGFe7XFhK8ikc4RjmB0LFx4_L5p5vZww0yVQY0RQRl1QppXiptnYBXs0IYU9W0QKRgIJrKivFaRaqJWaOM0K9WE8pb8Q8WLiBWbcodJzxoSudagU0bRPSq2nAXA3BaVgnJLglwGsgmCvjup8ix_DiTHLVE6BB4yPvubf8wBVLjoBNC82Sak7kWha21XjgzetTQ5NtSAQ842bQcEEUbvuSo7iP8wfveCtuli9PG72sT8SDlx7S5r4oHsSqI_A3cLbk2NW3OCqzxegLx0HxCItSDBsjWmuayaVPOq_93QEELFOcpjn2SBBG4drnU3EAq8iXQyogVqRNlTA-HTzrDo9ynJEhipIkwLmmTpixEk-ZIx0aNo9okkJLEPYPCAVBG4gSRzPH6WaAY-vWAogFQ4INnlktSJ_DS5dIyI2fUwzkM6qHGQ1Qc4jMQ0KMHkfRClmGccv9M4JtOPZS0j-InLKRomzwzKRdaPAoir1TBhAvaYTE8KHfXaiMKAuFeaM5PFsODhqa63zwqWTlBrkb32u_4Rumnh4fZHyUj1hFy1rDxxFzQYZbLKG9gaMyydGdoY8cPMgxqPdQ3Z9MVoevDgbN2VjQHLQsof9zu5sAOeqaU7B73Y_KqqLMLUi6Hqe9RCVaz4uSAmdbk6b7uPLTfzZL1hHXzBqF6gZJn_P9gofiunKqtTi-Pvj-MfhbRLvIBzBwSvK3qVXFetRlUxCcjzB0pyIrrI74cUgXmkIIRzbYjOxxwph0h1zMj-n3ndzu_R-dng8YZ-7s18FZ_NshpGhPWEcC4hbLXzofgpzvFuDxj8gkP9_rMYZbg-pG3FnLzg338Ng4GpHfCE6qtsVWeDydmR4mgS4kgDFiY5R2sz3V9I30WHMYTbro7zY46L_LDzx_5ByhMkjdF44hyxrLmQlWIf1V8Wdq-EcOMgumWcvcw9Iu6pWsy4zmBUUuoEdzyd2327nOiDvxFg_8jGvxCpf9qUJWbtxnuuZs093fnbyPaKaF3GzEZzhk-D95p_f-HsGtVWYf1OzzqzptXEr_27cDZeEM4e_EOB_GmCUneabzfeWhd5HqhjfpPBISwP_1E8B7o8Nfjy09E6uceX-JBaeJJlnWwbtv3EQvlNHDMnDFS1osHx3yz7f4q_-wGtXafz0KnZC8Lk8FzeRImr8vCveJXL7L-rfjdtf0U4d7Iqc-xoP-ycxJQ5oUvqEjHvfaT2Pv8y53Gxi6JcO9FqJd5URq8BYl-mPPeFwdx_03kZOL7Hum-OlWsknyhtqBna1Ez4FUKt0NeSqFaxR6F8JBCsf86Cm2Vvnqh5W_Fgb3lpxjwBu58LvrBoAJlPH3JLfIxf_3P7TxXeZxtPdr0nge9OKFJ0n2HCCo6--ei5FIU_aXVzqv_Q86cWDe5I3Rd48yOtX4SmSb6ya2pfNyU8rCXUvJzZcvK3gp5BORPNZ8w5-hSzL7vsBge7V67UFYrURz0h9gsrVv_qX816v1dFOy5Xl-4FrngettvuI50_HiGHE3oe9wI-9xIWYRztCGiOINUd-whDRZssygMQ7RcuuXUpbFE2-UW9vRiK4YxPdB4QN0YTzzUwJ0z1XXdYc3cCvTRvS-LtTCoBjRoTcqSFxD1emcQmvjcn-Cc0TiNj45F8HfPm61GbpPIKPxwuN4yCq_RVbPjBXGA5RpJtRKUSDT7_drt2fh8b1BW2XrXSKbsut4wshOwP6tV1fyRO11bqTH2fRZSDr4JPJ7lBNOcBl7iJ5TFfhgGcZjHfBKPTwICnHEbYnLxnRtE2g0jdk0soqQynDX7P0CxegdLBbNA4x63uyQX2tg9YIs1PuqtCzYNWBqk5MIKK_n0J9iLc1FpOf3vN9sAW3F0sZ56PE7SgNI04JSyKMFx7GEyYSRJ0pikyYUkGZdmCvwA-QX_hmqImjHXF2KKPYy90I-9FOb4cIz9jGdBkieARDnLRhOPQ-7IsdNjrPTqQteb3C6zamWgUQpjzb4RCpFYgXtqcYBPKrtWeroRXwmXayU3vLio5U9r_f8D_MkVUg">