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

    <tr>
        <th>Summary</th>
        <td>
            [LoopInstSimplify] Assertion `(L.contains(UserI) || isa<PHINode>(UserI)) && "Uses outside the loop should be PHI nodes due to LCSSA!"' failed.
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          max-quazan
      </td>
    </tr>
</table>

<pre>
    Run: `opt  -passes=loop-instsimplify -S` on the following test:
```
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128-ni:1-p2:32:8:8:32-ni:2"
target triple = "x86_64-unknown-linux-gnu"

define i32 @wibble() {
bb:
  br label %bb1

bb1:                                              ; preds = %bb
  br label %bb3

bb2:                                              ; preds = %bb2
  br label %bb2

bb3:                                              ; preds = %bb8, %bb1
  switch i32 undef, label %bb8 [
    i32 0, label %bb4
    i32 1, label %bb6
    i32 2, label %bb5
  ]

bb4:                                              ; preds = %bb3
  %tmp = lshr exact i32 undef, 16
  br label %bb6

bb5:                                              ; preds = %bb3
  br label %bb8

bb6:                                              ; preds = %bb4, %bb3
  br label %bb8

bb7:                                              ; No predecessors!
  ret i32 %tmp

bb8:                                              ; preds = %bb6, %bb5, %bb3
  br label %bb3
}

```
Crash stack:
```
opt: /localhome/mkazantsev/work/llvm/llvm/llvm/lib/Transforms/Scalar/LoopInstSimplify.cpp:125: bool simplifyLoopInst(llvm::Loop&, llvm::DominatorTree&, llvm::LoopInfo&, llvm::AssumptionCache&, const llvm::TargetLibraryInfo&, llvm::MemorySSAUpdater*): Assertion `(L.contains(UserI) || isa<PHINode>(UserI)) && "Uses outside the loop should be PHI nodes due to LCSSA!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /localhome/mkazantsev/work/llvm/build/RA/bin/opt -passes=loop-instsimplify -S ./renamed.ll
 #0 0x00000000021d384c llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /localhome/mkazantsev/work/llvm/llvm/llvm/lib/Support/Unix/Signals.inc:569:0
 #1 0x00000000021d1934 llvm::sys::RunSignalHandlers() /localhome/mkazantsev/work/llvm/llvm/llvm/lib/Support/Signals.cpp:103:0
 #2 0x00000000021d1fb3 SignalHandler(int) /localhome/mkazantsev/work/llvm/llvm/llvm/lib/Support/Unix/Signals.inc:397:0
 #3 0x00007f909e4f8630 __restore_rt sigaction.c:0:0
 #4 0x00007f909d054387 raise (/lib64/libc.so.6+0x36387)
 #5 0x00007f909d055a78 abort (/lib64/libc.so.6+0x37a78)
 #6 0x00007f909d04d1a6 __assert_fail_base (/lib64/libc.so.6+0x2f1a6)
 #7 0x00007f909d04d252 (/lib64/libc.so.6+0x2f252)
 #8 0x0000000001f71a29 simplifyLoopInst(llvm::Loop&, llvm::DominatorTree&, llvm::LoopInfo&, llvm::AssumptionCache&, llvm::TargetLibraryInfo const&, llvm::MemorySSAUpdater*) /localhome/mkazantsev/work/llvm/llvm/llvm/lib/Transforms/Scalar/LoopInstSimplify.cpp:124:0
 #9 0x0000000001f749e9 llvm::LoopInstSimplifyPass::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) /localhome/mkazantsev/work/llvm/llvm/llvm/lib/Transforms/Scalar/LoopInstSimplify.cpp:219:0
#10 0x0000000002485fdd llvm::detail::PassModel<llvm::Loop, llvm::LoopInstSimplifyPass, 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&) /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/IR/PassManagerInternal.h:89:0
#11 0x00000000029be43a 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&) /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/Transforms/Scalar/LoopPassManager.h:398:0
#12 0x00000000029be6be 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&) /localhome/mkazantsev/work/llvm/llvm/llvm/lib/Transforms/Scalar/LoopPassManager.cpp:156:0
#13 0x00000000029bf2d8 llvm::PreservedAnalyses::areAllPreserved() const /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/IR/PassManager.h:328:0
#14 0x00000000029bf2d8 llvm::PreservedAnalyses::preserveSet(llvm::AnalysisSetKey*) /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/IR/PassManager.h:195:0
#15 0x00000000029bf2d8 void llvm::PreservedAnalyses::preserveSet<llvm::AllAnalysesOn<llvm::Loop> >() /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/IR/PassManager.h:189:0
#16 0x00000000029bf2d8 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&) /localhome/mkazantsev/work/llvm/llvm/llvm/lib/Transforms/Scalar/LoopPassManager.cpp:41:0
#17 0x00000000029c089d llvm::SmallPtrSet<void*, 2u>::operator=(llvm::SmallPtrSet<void*, 2u>&&) /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/ADT/SmallPtrSet.h:489:0
#18 0x00000000029c089d llvm::PreservedAnalyses::operator=(llvm::PreservedAnalyses&&) /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/IR/PassManager.h:152:0
#19 0x00000000029c089d llvm::FunctionToLoopPassAdaptor::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /localhome/mkazantsev/work/llvm/llvm/llvm/lib/Transforms/Scalar/LoopPassManager.cpp:297:0
#20 0x00000000024840fd llvm::detail::PassModel<llvm::Function, llvm::FunctionToLoopPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/IR/PassManagerInternal.h:89:0
#21 0x00000000019b9de1 llvm::SmallPtrSet<void*, 2u>::operator=(llvm::SmallPtrSet<void*, 2u>&&) /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/ADT/SmallPtrSet.h:489:0
#22 0x00000000019b9de1 llvm::PreservedAnalyses::operator=(llvm::PreservedAnalyses&&) /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/IR/PassManager.h:152:0
#23 0x00000000019b9de1 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/IR/PassManager.h:522:0
#24 0x0000000002480d8d 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>&) /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/IR/PassManagerInternal.h:89:0
#25 0x00000000019b95f3 llvm::SmallPtrSet<void*, 2u>::operator=(llvm::SmallPtrSet<void*, 2u>&&) /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/ADT/SmallPtrSet.h:489:0
#26 0x00000000019b95f3 llvm::PreservedAnalyses::operator=(llvm::PreservedAnalyses&&) /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/IR/PassManager.h:152:0
#27 0x00000000019b95f3 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /localhome/mkazantsev/work/llvm/llvm/llvm/lib/IR/PassManager.cpp:127:0
#28 0x0000000002485c7d llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/IR/PassManagerInternal.h:89:0
#29 0x00000000019b7cb7 llvm::SmallPtrSet<void*, 2u>::operator=(llvm::SmallPtrSet<void*, 2u>&&) /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/ADT/SmallPtrSet.h:489:0
#30 0x00000000019b7cb7 llvm::PreservedAnalyses::operator=(llvm::PreservedAnalyses&&) /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/IR/PassManager.h:152:0
#31 0x00000000019b7cb7 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/IR/PassManager.h:522:0
#32 0x00000000007f9fc0 llvm::SmallPtrSetImplBase::~SmallPtrSetImplBase() /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/ADT/SmallPtrSet.h:83:0
#33 0x00000000007f9fc0 llvm::SmallPtrSetImpl<llvm::AnalysisKey*>::~SmallPtrSetImpl() /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/ADT/SmallPtrSet.h:344:0
#34 0x00000000007f9fc0 llvm::SmallPtrSet<llvm::AnalysisKey*, 2u>::~SmallPtrSet() /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/ADT/SmallPtrSet.h:450:0
#35 0x00000000007f9fc0 llvm::PreservedAnalyses::~PreservedAnalyses() /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/IR/PassManager.h:152:0
#36 0x00000000007f9fc0 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) /localhome/mkazantsev/work/llvm/llvm/llvm/tools/opt/NewPMDriver.cpp:496:0
#37 0x000000000076e308 llvm::SmallVectorTemplateCommon<llvm::StringRef, void>::end() /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/ADT/SmallVector.h:251:0
#38 0x000000000076e308 llvm::SmallVector<llvm::StringRef, 4u>::~SmallVector() /localhome/mkazantsev/work/llvm/llvm/llvm/include/llvm/ADT/SmallVector.h:1189:0
#39 0x000000000076e308 main /localhome/mkazantsev/work/llvm/llvm/llvm/tools/opt/opt.cpp:800:0
#40 0x00007f909d040555 __libc_start_main (/lib64/libc.so.6+0x22555)
#41 0x00000000007ee1d0 _start (/localhome/mkazantsev/work/llvm/build/RA/bin/opt+0x7ee1d0)
Aborted (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztW11zmzgX_jXkRhMPiE9f5MJxmtnMNm2mTve99AgQtraAWCGaZH_9eyTAsfBX0rjpNm3GwYCkc85zPoWQY54-nH1qSsudICuweSUROq1IXdPaci9yzqtTVtayZkWVs-wBnc6gF-IlkkuKMp7n_I6VCyRpLYGEZV9Y9gR6dB99KYlYUIlSIklOHngjEVBGFsb0tIAx9LTCoQ0nLtYHdemYl-os8PThlPUnWaQGOTg6LSN1EvRjoG2mbzN1G8b3DVH3D0R1GwYZDBGlYFVOe_Huo2AOtJryS8nvytOclc396aJsVqPaY0ozVlLEXIwsz75jcZxTC0cWHiMrPG_7xPFKOQjFAuUkpjnw8OPYWaelLsEQz_qz3HNUCZrWndxAczsn1-SEj8EJb2eFTVbuMViBRqeGyhCq75hMllr1TQl2UD3WpIiQ5Z_3fZHuZg-6eGazM2gOzGY8aPb7Zsu_MBF7x0DsrshjXxaVbsjrpUD0niTShO0E2y0RmHL5R5XLZBWZrIJjsPJWRn8a0_CbmH7gmi9NaF1zUVt45WGCtnpuLWDyio4BMFgB9A9B7eM3NHxtkGyngtRLVEuSfNmVjyHH62yPL3OekHzJC8hXl8UX8i8pZU2_wsUdF19Ue_612PxiMRxvBSnrjIsCtHU5AzJEwMl7qBdXUC5mXbkYJVWlk7T2u5jzHPWVpO8KqVITBmHdibppYa2Tx5sXvGAlkVzcCko3Wls6Gd9omNR1U1SS8XJKkmU_MOHAc63Xrc7871ksiHjYSueaFlw8zGaTzxWUMAowJ5DbFR7gQIVioCon4Hg_AuqSQL2Ei8_QdtUWgSl8EKuJ5U5v_rj6wFNque_Wuuheim2gyg7crRFUyZqlVFdZVYRRveRNnqKYIiCBSqBRo7SBDhy9n4JwymehLuEQZYTlNB21tr55_24ye4fqJi6YRATFzQJ8uuJCqpFLKataocSX8FkwuWxiwDCw-Wkl-N80AUtdMtApVRZHpEwRK5O86YRMtN_F4HZSkIR27GfKD0HOolo5oz1qY-FG8IUgBQL9NwUFx3ueT8YNy1P4_qSEj1kJRzV32T91QSPoJmhJClBQnndhZmHXRva93f9hJ3UjL1lzgfqhbk9uBCulBnWrUBq-K8jdnNdSUFJ0PgR9W9O-JNBmTaXMBWefS3avbrBFSfJ6BNoHrn6gXNF-hOIMoDhj19sGBeZ8LaU_wJQ5VVkvOqa0vZhdBrBdU0w8FDOLXWQIBPK8hgLdcWhK5naShdnYHlMviwJwj_lcwAyXCzqHyKnZAuovxP0o0UON4d768NT2PTcKkSCshnml0rCSCqaw-jsZ1XwErnJu37sB9FO5YEXIHxDySRghEqvQ3UsohH4GocAk5KUOCQAQ0dlrrtLFPCYHxMMZDDKohkOq2McHSEAPg0S07gNOFjoEjP2D68OeytDWjifWh9ctr57pg-OBYr0xHW-o5JHMDbhCl8PgQfCgvicQPQ81q69JSRaA150OBwz1DxmzTIlI-5GfaN3kkPGBsiqEWyy2Z4TZ9-Z6pfbgldWOnbXUqzKvWUW8yM_SdE3WlMLcIO8KCaj8Gop4_gTtbZjK6HEDiYmKr7RTFa2_s7GOYymg9Is7XDd5erxx9QkO2i9amFclMAFpRku1bDFwNbPKj2PquWRNyo86rxHTuzY9xX237kiPrA9o-L_vUzNWLnLa5rUtwtUybW80JfunofNKmiCGkTrlZULVU9NPqpZ1yCnNCIyaQ-6hkr5l2Gjtf1eS-e0Jv5In_EyVZTpIzWoWIPSTMlG5_djVZ_fMZ60u6FLkjiOzFuFhLQpi-kbryv-YXPJGKlof4Hnwpl1s-DUnMIdmzOt-0z2n-IHpOe7AczKcRnuntvo2EXSS56vGbt2iXdj7brOx1vXxwPW9bwJQdbdn1Hy67U0H9_-kDy98jnwaImfsm4j8bYi-cpY-D9a6h4Ox-o4fy03fXxXoV0A7nEYHB-z3hlLX7yz1xCzlOaaPhKaPJHY0Xg-GWUEgGUnRer2KFB24U4Sblfp5RYVaoLLcC8MMB8bqVwJHjYrJxa1SwCNbHRbeMCyi_ZB3xP8ulFtWKI4ObHu4-9jENd6P67Ip9bLuLe89Y5KSSiPaFkR992cF0mpQZ9_X9Gy8vtSt1uCHC1aenT1vwepRBdMn6fFYK1drWkQ7k9wPts-LFniwscDjjONxSp23nXUw3g_5Z8062D2Aa8ckY3tsvfmo0Dr08UCH3iBT2Wl0jEz1_XT_O9M9NdP5w_DwM_eNZ7pgP-SfNtOF-3FBVDY5veW95x2cYbUDnuXV3ZAjza42YPcvXAcTqWj45i8Jn5eeeqTTJ6rrWOllpa7dyeUHGuFliWU88MYwicO3nVjMfUybkH_WxOIOZ8NDXDvK-LaoesPRsHXqZO60Utt1ssTeHgZXRZWfk5q2DVb4blvbkdfptjt25JoY3GdhMFcfO8t0K6q9XTfRvQ4y1_NMaN6Toe2DZaYtE9zrAPN82wTm7we2IxeB6FvSzmusDQ9zTrBffkgMisQNq2jOSnMr6EwKVi4-dT9IOJQ72o1m1yRZajqTA9vQWl8d9uI8_9jIqpGXLN9C5EXNO-BMhCAP6u66Xz72HT4Ebe2uVZg3C1Zu9OeVnEsQrL1qxfuTlem-Xn9RwTJGRd9P7Tg__P3trqU4q4U3taUeX36gdzfXF4J9fVxLHptvvNzQdKqAunY0jPa_aKI2M1KwM5F0youClzt0DBD05KMPfFqm3zHaW8F0tGDfXCU393LuBbYbireZwbohr4LJGb4eMvdR9qAKwsojOQwcO0eJbDN7ev1Mrt9ea_u-j-ZztaV2Xksi5LyTY8-GWwxjVhtuFVHHxEOpk9qoJddTesnue821pbpiO1EblmmqyCdcUP1bAPXOtpeq_2nKSXrmpmN3TE4kkzk9s_zz4d5Hy7_4b__k4qQR-dm3_6bC9-0QnyzPqJckGYmI7SVeFEbpOHLiLBljktHEoRk90b8JqpWKgH9J75AmoWTxL07YGbYxtj3s25HtOsEoxInru77jeD6QJb7l2RR8Jx8pOUZcLE7EmRYpbhY1NOaslvVjIyRotiiptoiiTxq55OKsIPen_zTKQU409zMt_f8BySC_Pw">