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

    <tr>
        <th>Summary</th>
        <td>
            [FlattenCFG] Assertion `Val && "isa<> used on a null pointer"' failed
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    This bug was found by Azul FuzzGen IR test generator. 

Please note that it's similar to #56852, #48732 but has a smaller IR reproducer.

https://godbolt.org/z/ErqzarKTv

Run opt with -passes=flattencfg:

```
; ModuleID = 'bugpoint-reduced-simplified.bc'
source_filename = "gen_05655"
target triple = "x86_64-unknown-linux-gnu"

; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare i1 @llvm.smax.i1(i1, i1) #0

define void @function_0(i1 %val_i1_5) {
entry_1:
  ret void

bb_2:                                             ; preds = %bb_4
  br label %bb_4

bb_4:                                             ; preds = %bb_4, %bb_2
  %val_i1_46 = call i1 @llvm.smax.i1(i1 %val_i1_5, i1 %val_i1_5)
  br i1 %val_i1_46, label %bb_4, label %bb_2
}

attributes #0 = { nocallback nofree nosync nounwind readnone speculatable willreturn }
```
Stacktrace:
```
opt: /root/llvm-project/llvm/include/llvm/Support/Casting.h:109: static bool llvm::isa_impl_cl<To, const From*>::doit(const From*) [with To = llvm::BranchInst; From = llvm::Instruction]: Assertion `Val && "isa<> used on a null pointer"' 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/compiler-explorer/clang-assertions-trunk/bin/opt -o /app/output.s -S -passes=flattencfg <source>
 #0 0x0000561e1fa833f4 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x0000561e1fa80b54 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007fb6bc3f13c0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x143c0)
 #3 0x00007fb6bbebe03b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4303b)
 #4 0x00007fb6bbe9d859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #5 0x00007fb6bbe9d729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
 #6 0x00007fb6bbeaf006 (/lib/x86_64-linux-gnu/libc.so.6+0x34006)
 #7 0x0000561e1fb22ef5 (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3878ef5)
 #8 0x0000561e1fb23865 llvm::FlattenCFG(llvm::BasicBlock*, llvm::AAResults*) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3879865)
 #9 0x0000561e1f6ccf63 (anonymous namespace)::iterativelyFlattenCFG(llvm::Function&, llvm::AAResults*) FlattenCFGPass.cpp:0:0
#10 0x0000561e1f6cd24a llvm::FlattenCFGPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x342324a)
#11 0x0000561e1fdec4d6 llvm::detail::PassModel<llvm::Function, llvm::FlattenCFGPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3b424d6)
#12 0x0000561e1f19f02a llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x2ef502a)
#13 0x0000561e1d31c7d6 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>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x10727d6)
#14 0x0000561e1f19db66 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x2ef3b66)
#15 0x0000561e1d31d1d6 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x10731d6)
#16 0x0000561e1f19bb8f llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x2ef1b8f)
#17 0x0000561e1cef99a8 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, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xc4f9a8)
#18 0x0000561e1ce35b29 main (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xb8bb29)
#19 0x00007fb6bbe9f0b3 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x240b3)
#20 0x0000561e1ceeca9e _start (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xc42a9e)
Compiler returned: 139
```





</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzlWNtu4zYQ_Rr7hbBB3aUHPzhO3AbtosEm2FeDlCiZDU2qJJXE-foOJV8kx9lNWhco2sCRLXHmzMyZ4VAkVcV29rDmBtGmQs_EoFI1skB0i-avjUDL5vX1JybR7VdkmbGoYpJpYpWeohG-HuF5d70TjBiGpLIM2TWxiNuRnxhk-IYLopFVaOQHUZxG_shfuN9hmgQ-GLVoDUYJMhsiBNPOkGa1VkWTMz3t21hbW5tRMB_5S_hUqqBK2KnSFdy9wv-N_uOV6F8envpKXxuJVG3RM7drNKmJMQwwrktBrGUyLysH2JMfxXj36W6DK_QFfBHs9hqBHnieAFG14tJONHNOFhMIsha85KyY0hwEOlWjGp2zVckFk2TDdto-ELjCURxF8LsTtERXzCKreS0OYi9pvIrDSSMfpXqWE8Fl8zKpZHPQOvq3bGRuuZJobq12BEEaciCTkvwRfpaaucSYrczhq5HPHNKrGSmkkgyZmuUNkEEo2H7mQmhmGy079ILlkDyGuIdGIRbiaTOFNL1MuTfyU3dZIHfNXD5x362ClRzAnxQvnGa583CFWz0Qj56IWHFvFbXayVWnxqTV25V3SAkCP22L0gendOW7KD_z53iqIV9mx28EIOHeCNVIEMrE8PnBWHgZY23ZR63zO7tHGsK4FXVZe4_sIWkL9IbGXjSDsTB24sMATx7sSyq57ocOM0RzmKDMtPntgkmuLlBd6GhpON3uLaBaTXJ2nJZDCZjLLh0w3bVS0GOWjqgJ9IvfWb6_hS8uc9EU7PjgvqlrpZ3EghjLZTVdA46HM4dmLLE8R1QpgVp5MB7MuSErN7NXuRgFiwflWMuVhCYItgETZG46yUK5dpcOB11hR1dt33lQLXlH6CtNZL6-BfF2AoPGiYAb0k07aUbRtfNxDp1Lt9McuPhGXOogsbHrFeAoOAjeoMawAoEIQbKBUmrbFNOuZ_gJKgm0omLXUu9-vZnf3yDT0A23IO-6P_RdoMj16pNWCzE0dJq7uPZ8ntDOjWmgsfpLRCD_O_ZhJWAo18SsEd3nddpLNCqaTX1INIah7E6rSpMNgpbYbKAdmF2yXdr9JXhQQwx6wl5qobSLbAkdSlYTsmfHTIA3-QgDlMtOEU3c4rMkde3uG1s3dmrQ5P7scgB5WHSd22W3m1Jt9eMXDH9R7DGvJGkQlCG600BvG8mDC-2eV5KIn4EA4TxL277VFUI3ZKZ57eLF7f8B2zvBxjQK0SkYWPohkL8DSkoa0zwovSDHaLXSsG4DWStILQC53HEK190K01tZ3EBt1272To2aQrO-wi9eCCjH9gJmgr4ZyijDAUWacFj_f4yfO-S4RQ4DUBwgh0PkrEijDBGqPuR5D9n3QXGAHJ0iJ-2q9SlMUBlgxkNMUmIcfw4zCEFlgJkMaoH6PiujHebfmQKdtTRJAW5gLz2xF6Rx1GtDy25eLJY_gQ-99kUMz6-Eyh_b-l70NObzr8w0AiburgVezPcMXBv4ng18j_O8jANnj8DSs92oxiD33mVqt5r42a6nW_f2yp-Y2L4T2_5tqm2v34vsqH8H7r-dkW5m4xMXCz8kZ-l1EN0zCP-D_kAj2BpuvhBJKuAyWJxRgh7m9C6XhxDaTEgOeXBBDvsXvDOGRdzzs2AWFp7utwsTXqeZOO_tIL4TcgZjd9DTmH5iRUcCM3-Nmv36_S_nnIY-UDrg3B9w7mUl9vuF1fL8PR__w3S5lglsDOgK-nQVgZcnFynRf4zm_2-xezjxk5NiD0-KvaBxP3vd_vxB7X1yWZkXpIaXnvMRdwqfinen8g_UagDBDKKNTmq18D5Zq_vwFh_k6FLFduTovVL79xAPZQbMDomPT8qM0rT8wGQ_R_d_hSaoTw9YGNA0eEXNWZllJO15CTiOqTteM3jxZYPA7i3smKqvrDxXnG_ifWjPxb6QfN3izM-N_sqpJnp7K0t1C1v1t1Kwpf-t3fItuTgD8reG3wlnrjXZuqf9BB1lT9v7WfGWQtFUXL6Rh9ysLDjW3XXu_cJl8T2pb0y780m9l3MnHR__vlg55WEJxTKopnRYTUFEwdyGcHkpmzSltLdxczazk81giWkA-2S3N1sZS7Rd9Rz46PYwBJC-FR8PI2M5yRjq8C_Hpw-gB6uLHRLqTtlYAZlHXpCdPUh77zpmMy-OshDe9MN4XMyCIgsyMrbcCjYbRVe9bVN0fbFTqXGjxeyvnzpFcZpE4_XMi1iJWRywgBa4hA1jkWa-T-E-LkovTsftqadxcYD3Yz7zse_jFPs4ixI_miYMh0mMM5-RKMMFGYWYQS2IaXscq3Q11rPWB9pUxp3ScmPNcRASxivJ2B6fNHat9EzC1DePZEvGrcOz1ts_Af_UwNk">