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

    <tr>
        <th>Summary</th>
        <td>
            [LICM][LoopSimplifyCFG] Instruction does not dominate all uses!
        </td>
    </tr>

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

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

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

<pre>
    Godbolt link: https://godbolt.org/z/nxcc7nzTa

Run opt -passes='loop-mssa(licm,loop-simplifycfg)' on the test 
[bug.ll.txt](https://github.com/llvm/llvm-project/files/8991112/bug.ll.txt)

Failure looks like:
```
Instruction does not dominate all uses!
  %tmp34 = call token (i64, i32, i8 addrspace(1)* (i64, i32, i32, i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_p1i8i64i32i32i32f(i64 2882400000, i32 0, i8 addrspace(1)* (i64, i32, i32, i32)* nonnull elementtype(i8 addrspace(1)* (i64, i32, i32, i32)) @barney.4, i32 4, i32 0, i64 undef, i32 5, i32 5, i32 undef, i32 0, i32 0) [ "deopt"(), "gc-live"(i8 addrspace(1)* undef) ]
  %tmp35.le = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %tmp34, i32 0, i32 0) ; (undef, undef)
LLVM ERROR: Broken module found, compilation aborted!
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=loop-mssa(licm,loop-simplifycfg) <source>
 #0 0x000055bed996d55f PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x000055bed996af8c SignalHandler(int) Signals.cpp:0:0
 #2 0x00007fdf224013c0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x143c0)
 #3 0x00007fdf21ece03b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4303b)
 #4 0x00007fdf21ead859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #5 0x000055bed98afbed llvm::report_fatal_error(llvm::Twine const&, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x34afbed)
 #6 0x000055bed98afd68 (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x34afd68)
 #7 0x000055bed911b00a llvm::VerifierPass::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x2d1b00a)
 #8 0x000055bed70a37a1 llvm::detail::PassModel<llvm::Module, llvm::VerifierPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xca37a1)
 #9 0x000055bed90e7444 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x2ce7444)
#10 0x000055bed70ade8a 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) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xcade8a)
#11 0x000055bed6feb473 main (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xbeb473)
#12 0x00007fdf21eaf0b3 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x240b3)
#13 0x000055bed70a171a _start (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xca171a)
Compiler returned: 139
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzdV01z4ygQ_TX2hbJK35YOPjhOPJvapCaVpObqQoBkNhhUgDL2_vptkJ1YTlzJzuSwtSnFkgC9fv3obqBSdDf7pmilhEWCy6dRMkdra1sDD6N4CVfT9wZKN_D2N_zLLSFT-fcjHoWXo3De_953EqnWokmLjWHw-eUongql2snGGDyKC8HJZhQvfJPhm1bwekdqwCxhIFIS2TVDlhmL9rDZRdU1gRCB3dpRBnDFCTFu110VEAWwSyGeD7dJq9VfjFh4rbkAKvGyKMsoimJ4OoIEw0f8l5iLTjME_J4MSPHEnKF-QB7uL_96LY3VHbEcOFPFDJLKwsOGS2wZwkKgzgkQR_1whEZxZjdtkiIQBRE3wKonJqG94HkKmiCexP5WIEypNi0mDDojr838nXFHNzfibVcQBNCFRmnoFAnYtmWab5i0WAQNCYwFqq3i0gZtWK_aiDsL8G1_1b1FFBdFnIbubw-Nwt-hCUJJ2YH7TDDHxe5a9_0vwnnvKqwl2wWHYSgdEgUfOklZfWjN3jwMuo_dBPjsAkjElEFYwx34eLsL19iQieDPrG8-48Ae2gFdnoRCFgj2Gg1ECUrIWVnPzKFmQhGYxsDNHow_xFQfa2dcSpxLxYvTB4o9vZubH7fo6v7--72rAhfaA24U7YBsrWCs-wTSreUC--jHldKW0ZdQv7u5mj9cIdNVG24RRpBsSEOcaQsRf1pWPs5ebkzn0xdhSRGXRHSU-TJBNDZrVGHyZDWoFfTmHyw0INpt2pfUDaGrvNOq0XiDsG46p58jATIs_bwue4eYnoDAQmmmXZvAspm4Qqado2YCCQ-1EcoHl_2HaKIcBG5b997ZtrOBQZOHo_r3ueIHc7IwqtMw58nVPkxGcRKicOsSL8sqRssyp1lWozsNGeu9fHRuP_BGYvEHiCMc6-JZceqrQYn6LhOQ1mkR-v8X7OgEG9cFQadgYOlDoHgPNK1pHUOliBISotVKQxEHIVcw7T5ploJX8Lst8lWeQt7IbjtpZNd3tHatGaaBUQGE6EW4jVJAeYlJZyY5NhMxwsKkQhpzwz6BTxxy7pHTBD4cIKdDZEyLrOyj-t8hxzF8OEDOBhoXuIYb8mEOoZnM-6xY1RiSecW0Vk7y1-7Hn1xClEPkwSTkLu0qpYSPFk_rdyLXE05Sz2hAOT-lTPPiK-0B3MDedGAviqowxEcS_YBqV3Om7wB8L1onByrd-tK0F-i1eQ4BuzPc3GKJGyCZLN58ApnmvvoyOWPq2Q_cK47dm4Y4meLoiCVlFnYc_bNzEZgx8R7XgW8DUQY9d5B1TD8z2rvPzK-I4q7_ttLE6zgQuhzEUcimaZoeC-PEPU_wf6lSTLwKr1tcKPrhSTxSVhynG-A4pe54y6DOsYFjDxYWnua-3zN86O8jrLPM3mKy9jjz93pveKWx3l3LWl3Davh2FJS7735VXXLxDshvdZ9xZ6413rnW4wl6Hevm6MPhXkLRNTAbp-NhblbWVXH_1tP7k_ebqnOjDul-GNevAh_dvzDZXJAMomiwd8hrVqXTBG0wl19ls_KQA5vxySpdh1UC2wy3BK_gJAPr6BGBz67YcHYYWklO8iOaRhj1-F-npwN9sbrYI8Ee2XZwjqFuXxol5cmpc0xnCS2TEo8tt4LN4Fxyc724dacKeIId5cN-Q7lYfoNG9Onz6bjTYvbru_Isj9NkvJ7VRZhXOIynSUrraVLXackqUhRhnVW0YngscMWEcbzhvCTZT-Qh3NkpuxzzWRzGcZjH0yhMplkcpBjTKq8SWodRXWYJnH8YzK8I_ClI6WasZ54SnC6MOxxxY81rJ0wCbFmZl8nh486ulZ7RCj91kj1zsh578zNP_x8ZejBq">