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

    <tr>
        <th>Summary</th>
        <td>
            "Instruction does not dominate all uses!" after IRCE pass
        </td>
    </tr>

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

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

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

<pre>
    ```llvm
; ModuleID = 'bugpoint-reduced-simplified.bc'
source_filename = "_generic_matvecmul!"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128-ni:10:11:12:13"
target triple = "x86_64-pc-linux-gnu"

define swiftcc void @"julia__generic_matvecmul!_1420"() #0 {
top:
  br label %L1618

L1618:                                            ; preds = %top
  %0 = icmp slt i64 undef, 1
  br i1 %0, label %L1843, label %L1634.preheader

L1634.preheader:                                  ; preds = %L1618
  br label %L1634

L1634: ; preds = %L1830, %L1634.preheader
  %value_phi590 = phi i64 [ %5, %L1830 ], [ 1, %L1634.preheader ]
  %1 = add i64 %value_phi590, -1
  %.not1038 = icmp ult i64 %1, undef
  br i1 %.not1038, label %L1655, label %L1652

L1652: ; preds = %L1634
  unreachable

L1655: ; preds = %L1634
  %2 = call token (...) @llvm.julia.gc_preserve_begin({} addrspace(10)* nonnull undef)
  %3 = call token (...) @llvm.julia.gc_preserve_begin({} addrspace(10)* nonnull undef)
  %4 = call token (...) @llvm.julia.gc_preserve_begin({} addrspace(10)* nonnull undef)
  br label %pass625

L1711: ; preds = %pass625
  call void @llvm.julia.gc_preserve_end(token %4)
  unreachable

L1714: ; preds = %pass625
  br label %L1830

L1830:                                            ; preds = %L1714
  %.not1049.not = icmp eq i64 %value_phi590, undef
  %5 = add i64 %value_phi590, 1
  br i1 %.not1049.not, label %L1843.loopexit1105, label %L1634

L1843.loopexit1105:                               ; preds = %L1830
  unreachable

L1843: ; preds = %L1618
  ret void

pass625: ; preds = %L1655
  br i1 undef, label %L1711, label %L1714
}

declare token @llvm.julia.gc_preserve_begin(...)

declare void @llvm.julia.gc_preserve_end(token)

attributes #0 = { "probe-stack"="inline-asm" }

!llvm.module.flags = !{!0}

!0 = !{i32 2, !"julia.debug_level", i32 1}
```

Running with `opt-15 --irce test.ll` gives the following output:
```console
$ opt-15 test.ll --irce
WARNING: You're attempting to print out a bitcode file.
This is inadvisable as it may cause display problems. If
you REALLY want to taste LLVM bitcode first-hand, you
can force output with the `-f' option.

Instruction does not dominate all uses!
  %6 = call token (...) @llvm.julia.gc_preserve_begin({} addrspace(10)* nonnull undef)
 call void @llvm.julia.gc_preserve_end(token %6)
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-15 test.ll --irce
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(_ZN4llvm3sys15PrintStackTraceERNS_11raw_ostreamEi+0x31)[0x7f28a06723b1]
/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(_ZN4llvm3sys17RunSignalHandlersEv+0xee)[0x7f28a06700fe]
/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(+0xf048d6)[0x7f28a06728d6]
/lib/x86_64-linux-gnu/libc.so.6(+0x42520)[0x7f289f24b520]
/lib/x86_64-linux-gnu/libc.so.6(pthread_kill+0x12c)[0x7f289f29fa7c]
/lib/x86_64-linux-gnu/libc.so.6(raise+0x16)[0x7f289f24b476]
/lib/x86_64-linux-gnu/libc.so.6(abort+0xd3)[0x7f289f2317f3]
/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(_ZN4llvm18report_fatal_errorERKNS_5TwineEb+0x1ab)[0x7f28a05a73db]
/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(+0xe39226)[0x7f28a05a7226]
/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(+0x10a452c)[0x7f28a081252c]
opt-15(+0x2b4ed)[0x55dec3ff44ed]
/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(_ZN4llvm11PassManagerINS_6ModuleENS_15AnalysisManagerIS1_JEEEJEE3runERS1_RS3_+0x1a9)[0x7f28a07e30d9]
opt-15(_ZN4llvm15runPassPipelineENS_9StringRefERNS_6ModuleEPNS_13TargetMachineEPNS_21TargetLibraryInfoImplEPNS_14ToolOutputFileES8_S8_S0_NS_8ArrayRefIS0_EENS9_INS_10PassPluginEEENS_8opt_tool10OutputKindENSD_12VerifierKindEbbbbbb+0x45e7)[0x55dec3febf37]
opt-15(main+0x2b64)[0x55dec3ffdc04]
/lib/x86_64-linux-gnu/libc.so.6(+0x29d90)[0x7f289f232d90]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x80)[0x7f289f232e40]
opt-15(_start+0x25)[0x55dec3fe4905]
```

Trunk also fails similarly: https://godbolt.org/z/ns3zff996
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEWFtv47by_zTMC2FDpO4PeUg2zr9ps2lgB_2jfREoaWSzS5M6JJWs--kPhrIdX5Kz3T1BT2A49nDmN_fR0MI5udQAlyS9JunNhRj8ythLb3qjhJV-c1GbdnNJsmh8KfW8JtENia5IfE0_m3ZQcHdDSXxDCc_rYdkbqf3EQjs00E6cXPdKdhLaad0Qno-izgy2gaqTCrRYw1aaV0vQYGVTrYV_hmY9KMIZ4XwU8sIuwdNWeKHExgx-JwaTNYmvYNLzPCLxVczDG35lx1_xU5aEt4ncfegKFGK8mOgCP2Q7mSyZLAJZIjkwscCJb_GpWd7KXu09-VpkVZZM-maipB6-TpZ62AuM7y10UgN1L7LzTUOfjWwpSSLC-Z-DkqJ6MxYVSziyEF4QXlLC44iS_HpriOlJvEWntLZUiRoUJTy9ZxkrDpWPhPiKfscfpru30Lqtjynq2yojPI0CWTbrnjrlqcwSOugWOsI_UXZglGSBG8kH9hVJfELJ4mTaW1iBaMGe2H509He8OLP9ICJnoYqTM3Wo5A2MIg5-vGdviMuzUANU_Uqm5RiifiVDdEh6jefpHqHAZKY34Xt6Tdnb0IHlFZ4FTNG2I-axPkSYsAPuqTaeRXHxmqthmyuEQvYxZ6fp2smd5mi0_ojCT4KX8neCt48zpYO2IJqVqBWcSqffliY85eGgEUpRb76ApoQX0-k09EgSRtY0dNV02VS9BQf2GaoallJjJ-XXJA8xtK4XDRBesIjwkvArqo3Wg1K7Ui4PdMb_A53JP63zsDV64VzG0-MM5WEmnmfoiJmOJu9m3Dt2gm4JL3Z-pcmBGe8WSM7e7s0T9ccdjm17hIKE_3IYjqacdlpS4v_XboN_vdemR32HY-FbfX0-Uw9Vno_XqTKmh6_SMxadde3pyDvj_2Z03pmO38ofzv13Gvx1PlvwoXYORXcJfkc4TY_Ds38UHXiNpXtK2cUhvzl-VjdKWNj13Dc7bWzJtxD-fgucAAjvrawHD2771EdXc3yC8N6aGibOi-YLrgbxDeFcaiU1TIRbE87piTuEs6B_HZa3aafEchc7hkOCs-hcIjrgkDGnfHw8sd3CMm2hHpaVgmdQYUP5RJGNvSLtNshD4PmgtdRL-iL9ipIsMr2fsJROJtI2QD04P1WKZBFdymdw1K-AdkYp84JCZvD94Pc7z15BY7Qz-0rjCd2ibuG26OPx_1_NH-4e_g_r6HczEJ5boMJ7WPceVXhDeyu1R11U0Fr6xrRAcXGdjgBPK-kovrRon6XDEqfCUenpWmxoIwYHtJWuV2JDMVMK1m5K77a9vjEDnc-u7u9_py9Ce9TnhfNA7-9_-3ygzjo_WQmsjk90Y4ZRuBGadgYDNUZijCLGiGTRpCM8R8-l0dPDkN9p5-3QIJ22BhzFCdWatdTCA8U5PThwmNnXaZT9w8-dH3hcZHvpELrZfP7rHLN6bQPHWOu0M8MYxMase6lEiIKojfXQ7l1-vJ9dLWbUDfVahqwPS2qhNzbkZ-V977Do-C3ht0vpV0M9bcya8NtwNxr_TXpr_oTGE34rnRswoLdU6JZK3aihhZCmxgq3orVovngrml1FLbCTaTusX9f5aDpO2UdrllasqbDLYQ3aox3_qbpfoUJtYBG7zbo2iuK1C0dJAdoNFrCo6Eo8Aw3Gj0zyL7BUajyz9PHq6SdqLHV411kBBf0srdFoBX0WFksOA18tfv98_ev93R-zeYUi2LvYRHgpxA_SY572LctvB2cxZLLeBY6lhN_WWDm3WGG7I1kj_ISlU2emjPCi-uMhQYHYbRxLH7FLg7tPGMrZ_GFRMWbFS2WctyDWM0n4dfQ1Zqg_vY6-5h0vRJTlPK7Zfqf-MIPy-aAXcqmF-knoVoF1s-dgAMCpAVHUwYcYEPC7KCna7MxJpB3oGCG2t9SDKyoeNIiX7fASnvLoEK7seFIj7Xvher-yINrqi1QqQDPenACXncib7wa2QjoYEbMzS5P8-x0PAyEAtvEJYMzyLv7QcmHFOFuqTnihKrDW2Nn8l4dFlT69SA2zenRN1MdJTUUet_XHFQ7EJefZmQ6kfZgOFokkPc66iArGkbZTMo6znQSvE5zMI3-attDEXZcg7UNzwB6Fc5-FFkuwdw-LKht_2JrhFEmvtFAbJ_fnC1b9PJvNfp7NYjvo2XzBqvkirrZpKo-9yyGO2vLcu73q1A4atT_KHnBpQ53lwlupl3PowiDbWfOI5sRP4Qenz6JZITfSOBtp97K2wm7udGfu1r0a-ZMnY9SvYUG4lQpmi6LCV1Q9LKriylqxmUN3t4iq2exhUVboPYuCQWpYSj1DclWY3lfeGMWiEeoXqdvZw-KmYvw3sLKTYAOpDn_j5EghP8kc1F2cn8diLTBVIdtZcprstomSHxtdvGzL09EVc6R9L1xV4bfKeWF9tbe2OAeHJHoj1UFuNCk9jUhSRumrPW_tyE920F-oUM7QTkjlqJNrqYRVG3z6n6wjpq2N8lNjl4Tf_kX4rXbxX11XltlFexm3ZVyKC7hkWVEWOWMFv1hdiiauy0xkrCnzjom8zhlnok0a1jRRlpYX8pJHPI5yHrEsLuN02ma5SJOmKKCEOi1SkkSwFlJNw6pm7PIi7DyXWVwWyUW4YLnw-zLnGl5oOMQ7QnpzYS9Dw9bD0uGqJ513ryheegWXhPO_v7NyTkXnwdK7-acZxVvixWDV5Y8vbcGHfwcAAP__baGnTg">