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

    <tr>
        <th>Summary</th>
        <td>
            assertion violation in SimplifyCFG
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            llvm:optimizations,
            crash-on-valid
      </td>
    </tr>

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

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

<pre>
    ```
regehr@john-home:~/alive2-regehr/build$ cat reduced.ll 
; ModuleID = 'reduced.bc'

define i8 @f(i1 %0) {
 br label %6

2:                                                ; preds = %8, %3
  br i1 %0, label %8, label %6

3: ; preds = %6, %3
  %.0 = phi i8 [ %.4, %6 ], [ 0, %3 ]
  switch i8 %.0, label %5 [
    i8 0, label %2
    i8 1, label %3
  ]

4:                                                ; preds = %8, %5
  %.1 = phi i8 [ %.2, %5 ], [ 1, %8 ]
  br label %8

5: ; preds = %8, %7, %3
  %.2 = phi i8 [ 0, %3 ], [ %.7, %7 ], [ 0, %8 ]
  br label %4

6: ; preds = %2, %1
  %.4 = phi i8 [ 0, %1 ], [ 1, %2 ]
  br label %3

7: ; preds = %8
  br label %5

8: ; preds = %8, %4, %2
  %.7 = phi i8 [ %.1, %4 ], [ 0, %8 ], [ 2, %2 ]
  switch i8 %.7, label %7 [
    i8 0, label %5
 i8 1, label %4
    i8 4, label %8
    i8 3, label %2
 ]
}
regehr@john-home:~/alive2-regehr/build$ opt -O2 reduced.ll -o /dev/null
opt: /home/regehr/llvm-project/llvm/lib/Transforms/Utils/SimplifyCFG.cpp:6985: bool {anonymous}::SimplifyCFGOpt::simplifyCondBranch(llvm::BranchInst*, llvm::IRBuilder<>&): Assertion `!isa<ConstantInt>(BI->getCondition()) && BI->getSuccessor(0) != BI->getSuccessor(1) && "Tautological conditional branch should have been eliminated already."' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: opt -O2 reduced.ll -o /dev/null
 #0 0x00007f0b045c5aa5 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x00007f0b045c2ad4 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f0b03f81520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x00007f0b03fd5a7c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #4 0x00007f0b03fd5a7c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #5 0x00007f0b03fd5a7c pthread_kill ./nptl/pthread_kill.c:89:10
 #6 0x00007f0b03f81476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #7 0x00007f0b03f677f3 abort ./stdlib/abort.c:81:7
 #8 0x00007f0b03f6771b _nl_load_domain ./intl/loadmsgcat.c:1177:9
 #9 0x00007f0b03f78e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#10 0x00007f0b057f5b10 (anonymous namespace)::SimplifyCFGOpt::simplifyCondBranch(llvm::BranchInst*, llvm::IRBuilder<llvm::ConstantFolder, llvm::IRBuilderDefaultInserter>&) SimplifyCFG.cpp:0:0
#11 0x00007f0b057f998e llvm::simplifyCFG(llvm::BasicBlock*, llvm::TargetTransformInfo const&, llvm::DomTreeUpdater*, llvm::SimplifyCFGOptions const&, llvm::ArrayRef<llvm::WeakVH>) (/home/regehr/llvm-project/for-alive/bin/../lib/libLLVMTransformUtils.so.16git+0x28d98e)
#12 0x00007f0b05ed7943 iterativelySimplifyCFG(llvm::Function&, llvm::TargetTransformInfo const&, llvm::DomTreeUpdater*, llvm::SimplifyCFGOptions const&) SimplifyCFGPass.cpp:0:0
#13 0x00007f0b05ed88ad simplifyFunctionCFGImpl(llvm::Function&, llvm::TargetTransformInfo const&, llvm::DominatorTree*, llvm::SimplifyCFGOptions const&) SimplifyCFGPass.cpp:0:0
#14 0x00007f0b05ed8fe5 simplifyFunctionCFG(llvm::Function&, llvm::TargetTransformInfo const&, llvm::DominatorTree*, llvm::SimplifyCFGOptions const&) SimplifyCFGPass.cpp:0:0
#15 0x00007f0b05ed91bf llvm::SimplifyCFGPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/regehr/llvm-project/for-alive/bin/../lib/libLLVMScalarOpts.so.16git+0x3c41bf)
#16 0x00007f0b0ac881d6 llvm::detail::PassModel<llvm::Function, llvm::SimplifyCFGPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/regehr/llvm-project/for-alive/bin/../lib/libLLVMBPFCodeGen.so.16git+0x5a1d6)
#17 0x00007f0b0b5633bc 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>&) (/home/regehr/llvm-project/for-alive/bin/../lib/libLLVMAMDGPUCodeGen.so.16git+0x3303bc)
#18 0x00007f0b049e7cdf llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/regehr/llvm-project/for-alive/bin/../lib/libLLVMCore.so.16git+0x2eacdf)
#19 0x00007f0b0b546e56 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/regehr/llvm-project/for-alive/bin/../lib/libLLVMAMDGPUCodeGen.so.16git+0x313e56)
#20 0x00007f0b049e5f5e llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/regehr/llvm-project/for-alive/bin/../lib/libLLVMCore.so.16git+0x2e8f5e)
#21 0x000055b42298d491 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool) (/home/regehr/llvm-project/for-alive/bin/opt+0x35491)
#22 0x000055b4229784ad main (/home/regehr/llvm-project/for-alive/bin/opt+0x204ad)
#23 0x00007f0b03f68d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#24 0x00007f0b03f68e40 call_init ./csu/../csu/libc-start.c:128:20
#25 0x00007f0b03f68e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#26 0x000055b42297ca45 _start (/home/regehr/llvm-project/for-alive/bin/opt+0x24a45)
Aborted (core dumped)
regehr@john-home:~/alive2-regehr/build$ 
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWUtz4yoW_jVkQ9klIaHHIgvbafdNTac6dZPbs3QhgWxuY1ABynRmMb99CiTZkiKn06-auTNdaT94fOec73wcECbG8L1k7BrgNUBIM8ONVRogBPDNFWnsQelrzfbsoK8KRZ-vQRJ0f8ENCFZtF4iDP9VBLg7qyEC0-hdAWyL4E0OLrh9ti4YLClAMS2KhZrQpGV0KAVsYEK3hnaKNYLc3EEQ3EKC0H1SUAKXdMP9KWcUlgzyDIA4qgDIeQoBwAFAOQbpuB8FCQ0EKJlxXMpyOQLSC3_jP-VdrRk3nHM4A2rj3qLPmzJ3c2JwtZ6NvIz8i58cL4GQKDBBeBr63PnAfNF77xrgbmUCAb_xnvIZBP903dhDmH9yWBz_XgY1cwm5aPxC6MeN-NOoLR31nH3tb7Wv8MxnGQyLCOSJQP3JIRNg1ZkMihprIhh7j2Vz0LqRzOUFTV8bUd264kf30dC5RF_2Lh_4ls_71gYdDv-JLfoVz9KBL5qOh-fQCPTPz8HBe9iqtvYDR0P10LsO9t_FlBrtGNBfXWP_pSMPpV_Tfy--F-OPRpHiy6od90eyCOq-Z9OZ7a6mqLVx8RMN6ulAQoC1lTwBtZSNEC61q61OBth4WbU9YQjwdF7VWf7LSdl_dGy8A2j5qIk2l9NEAtP3DcuHeH_ixFrx63mzfL8u6BtEqyTO_fgqlhCvARCr5fFSNcZFFKxCtBnM-ek9AtDJ9m5J0rYksDwBl3rzvbptupbEArTyBp67b39eOAKZBtAHRO4ASgHLnwMoYpi1XErr9CYXcEBBtNkoaS6S9ldaPzta3CxC92zPrTHM3HqDMQbj9w4El8DTkoSlLZozbEbN2g0GhE-jsgHCAABB6JI1VQu15SQQse1tEwMLHBs1BNYLCA3lisGBMQib4kUtiGYVEaEbo89JtxCiFFeGC0WWbzPsP71YP76BpiiO3kMCi2UPNaqUttAoerK2NIwptAdruuT00xbJUx0FyxynnxjTMZRYSSSGXpWgog_bAYKmJOcCClJ-tJiXrzD9YUn6GtDm63LdNwRIE-b1We02OkOh9c2TSOiferlAIUBTA4EsQBEFaBUUQ4xITguG95tJ6m4_OiQe-l0T8RiQVzHH-pDj1Cslh22U6VQb-_wk7nGAjQmM4BePSfhUIDYGiKgsxCqAXULdqvmTJLokXgsvmy2Ivm7ajXBq1TABaB19ihJHT0hkzGmNSTNIS7na1PTgV7D5zIXZuuTDHK_EKXzr2aisA2g6HLUsQrWK3AafJGT9-C760TDt1voacuooeDtjAc8jDaa_CZfkELpmSG6cJ3BufD4_UfgRou_Tfng1ltdNurQz_4uoa4YZ5bOQ2rQEH6Rg6SdMqgqRwq8ZDWdqmzze13oUu4jNC9gIhLOBOip1QhO6oOhLe5oVLH65rPpp9SVq4MEydS4O052PANGN58m1SinKWJycpOZmP1hBOK1yEXp6nogwlOTJTk5K1VfOXludza1-Ft8p3zc-4YRVphL2Vro47gK64w5ebzmBVurDDSdh5nrGBBXOePw6DGF6uhSo_vwjjkeg9s6ct8FZWyhVxF3AyHnmjjo-asT9qSpzTU6Axu1xJcwFnpTV5_p1VI97-zsjnT795JvJOG1_ZwiulF_7E4E4KXPZrpVWU4MWHD5_uTmH5Xd3pKUz23HpNoYzmGRuJalTzMKNpHkeQW6aJ5U9MPD9coHfbyLLdX5P_BLkj3dwTM1PRXXTRJLosIxT2iulD2Gzf3x5r8QvCczu-0i7IXxJdPI2uYnguur9eZHgSWR4W1bwJh9E26ka-LdCVJOLZcHNHJNlPatlp0qk-_bSF-VASQfTH2k4WZVTGYVGNFuVoryRlloU0GQRAmSVctJ9d_HeKMjEfxqXMeNpGnfeaGaafGG3pYeb7SHN_f4VsrO-3G0XZeybH2cAkpONtd3S6KHASRUX5E5Lhx74W8_fS__-c1dXdzfv7P2YTG0VBVJSjzI5OfXHO0pIOq0x7a_moen9dxlaU1FbpeTbaCd_ERTfl5zOxUZpNNn9GSjquM_lY2nHC8LfVmT7izRtp-1naPNN2SZn_Tbl4TZVhxPCo3qBgokpcYfaGujGXiv8dCufknFV4dJZF_ZMCxkWMUJ7ROA8HjuvGa_Ge10xwyUaxPljN5d6d0Ge0fOGodEfKg8eZfbz4wAtN9LM7RrWny-kopcTHxtaN3XIxA_JD3RfCmX0M8ZyIZs_li91D1XZnlepKQGvvb1zS10Z9YppXnOl-XOF63vz-3ZJRdbegcJyHI1WgsSrSLCYU-gf6HzSFgpjQkanJZU-S0TyAu517sN8ZS7TdlUSI3ek2oTTNy_uO7kZlbtLyAKIV9hc1ydlqPLXK4gD6OVxyOzXUfnToC4_eXmAgB4rOJ3CE50BHocxFMQsepblz-4ydTDJSkhjDFvWHcxKTGJ9ysiqUtow60FJp5m822Tll334r38XQ_1B6Ra8jmkc5uWLXYZIiHAZBmF0drrMsJDgJEGNRFCdVmhY0QlUVJimJaIzCK36NAoRCFIVhFiQ4W6IwKVmSVxnDBaVpBuKAHQkXSxf6Uun9lb_MvcZ5mmRX_icH0_2y261EVVt-5P_0d4jGXy5vAEL-oneh5OKJCE67H3_1tSe0aPYGxIHgxpqzHcutYNfkdOH-xJVoLya5HD69XTVaXH__lbQP5N8BAAD__8oP_Nk">