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

    <tr>
        <th>Summary</th>
        <td>
            Clang crashes on a invalid Phi Instruction
        </td>
    </tr>

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

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

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

<pre>
    This is a problematic LLVM IR. label3 is not the direct predecessor of the PHI node.
```cpp
define i32 @f() local_unnamed_addr #0 {
    label0:
  br  i1 1, label %label2, label %label3

label2:                                                ; preds = %label0
  br label %label4

label3:                                                ; preds = %label0
  br  label %label5

label4:                                                ;
  %op5 = phi i32 [ 3, %label2 ], [ 4, %label3 ]
  ret i32 %op5

label5:                                                ; preds = %label3
  br label %label4
}
```

llc gives an error correctly.
```
# llc test.ll
PHI node entries do not match predecessors!
  %op5 = phi i32 [ 3, %label2 ], [ 4, %label3 ]
label %label3
label %label5
llc: error: 'test.ll': input module cannot be verified
```

However, when I use clang to compilt it, clang crashed.
```
# clang test.ll -v
Debian clang version 15.0.0-++20220507071904+83e07916ffc5-1~exp1~20220507072002.243
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/10
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/10
Candidate multilib: .;@m64
Selected multilib: .;@m64
 "/usr/lib/llvm-15/bin/clang" -cc1 -triple x86_64-pc-linux-gnu -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name test.ll -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -fcoverage-compilation-dir=/root/a -resource-dir /usr/lib/llvm-15/lib/clang/15.0.0 -fdebug-compilation-dir=/root/a -ferror-limit 19 -fgnuc-version=4.2.1 -fcolor-diagnostics -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/test-2dba98.o -x ir test.ll
clang -cc1 version 15.0.0 based upon LLVM 15.0.0 default target x86_64-pc-linux-gnu
warning: overriding the module target triple with x86_64-pc-linux-gnu [-Woverride-module]
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: /usr/lib/llvm-15/bin/clang -cc1 -triple x86_64-pc-linux-gnu -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name test.ll -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -fcoverage-compilation-dir=/root/a -resource-dir /usr/lib/llvm-15/lib/clang/15.0.0 -fdebug-compilation-dir=/root/a -ferror-limit 19 -fgnuc-version=4.2.1 -fcolor-diagnostics -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/test-2dba98.o -x ir test.ll
1.      Code generation
2.      Running pass 'Function Pass Manager' on module 'test.ll'.
3.      Running pass 'X86 DAG->DAG Instruction Selection' on function '@f'
 #0 0x00007fb5fea6d291 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0xeae291)
 #1 0x00007fb5fea6afde llvm::sys::RunSignalHandlers() (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0xeabfde)
 #2 0x00007fb5fea6d7bb (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0xeae7bb)
 #3 0x00007fb6080a6140 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14140)
 #4 0x00007fb5ff146200 llvm::FastISel::handlePHINodesInSuccessorBlocks(llvm::BasicBlock const*) (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0x1587200)
 #5 0x00007fb5ff1458e9 llvm::FastISel::selectInstruction(llvm::Instruction const*) (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0x15868e9)
 #6 0x00007fb5ff2a60db llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0x16e70db)
 #7 0x00007fb5ff2a4353 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0x16e5353)
 #8 0x00007fb601320e4d (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0x3761e4d)
 #9 0x00007fb5fee086dd llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0x12496dd)
#10 0x00007fb5febbba8f llvm::FPPassManager::runOnFunction(llvm::Function&) (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0xffca8f)
#11 0x00007fb5febc2ff3 llvm::FPPassManager::runOnModule(llvm::Module&) (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0x1003ff3)
#12 0x00007fb5febbc626 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0xffd626)
#13 0x00007fb605fe1c13 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) (/usr/lib/llvm-15/bin/../lib/libclang-cpp.so.15+0x18fac13)
#14 0x00007fb606328292 clang::CodeGenAction::ExecuteAction() (/usr/lib/llvm-15/bin/../lib/libclang-cpp.so.15+0x1c41292)
#15 0x00007fb606d337e7 clang::FrontendAction::Execute() (/usr/lib/llvm-15/bin/../lib/libclang-cpp.so.15+0x264c7e7)
#16 0x00007fb606caa346 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib/llvm-15/bin/../lib/libclang-cpp.so.15+0x25c3346)
#17 0x00007fb606dafdaa clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib/llvm-15/bin/../lib/libclang-cpp.so.15+0x26c8daa)
#18 0x0000560e9db3c1b7 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/lib/llvm-15/bin/clang+0x141b7)
#19 0x0000560e9db3a4bb (/usr/lib/llvm-15/bin/clang+0x124bb)
#20 0x0000560e9db3a304 main (/usr/lib/llvm-15/bin/clang+0x12304)
#21 0x00007fb5fd6f3d0a __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x26d0a)
#22 0x0000560e9db36f5a _start (/usr/lib/llvm-15/bin/clang+0xef5a)
clang: error: unable to execute command: Segmentation fault
clang: error: clang frontend command failed due to signal (use -v to see invocation)
Debian clang version 15.0.0-++20220507071904+83e07916ffc5-1~exp1~20220507072002.243
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
clang: note: diagnostic msg: Error generating preprocessed source(s) - no preprocessable inputs.
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWcty2zgW_Rp5g6KKBJ9aeCFbVuKqeOKKU53ZqUAAlNBNkRw-bOfv5wCgJFKW48Sj7kVPu2xawuPeg_u-YFqK75dfN6oh-GWkqss0l1vWKk4-ffrtjtx-mZKcpTL39YKibEm7kUSoWvIWq6WQXDZNWZMyMzP3H2-xSsjpxF1M3Pkkcu0vryo7ImSmCkmUT8kkcLMJTSZ0RvKSs3zVFQXbSrFiQtRkQn2XTOIru43gx-BwJ_58N5TWhCiPeBN6bSexKTQf6Mshv0dknv0i39D9lZ-Jf2WO3eDTYk_bHSAacw1ecPX_FK5HbMMXbIP3sd2xAOGyCg37aqOs-sIr4ms574WOoYUZwEwwnPHNTE-qlq3db0i-ABqeTT7-m1qJF0dmOkKTc7JWjxJ-URBZ1zByXtba8PPvx-bdf6U-0bta2bTTPLeDO48gsmhrBWqiNH4EJ-OboQs1E-qdXdwnfeCkrQC4lrw5qP4wofHuHDTWA6qoOsAuRZdLwlmhD5FK8ihrlSkpfiDJj-WTxDIN8WkjC3JLugYkclasSVtCqttK5TCKVq-ww7xmzUaK1-Xc77YIifNoZxYyVdCWnQTLRpUF8cKpO3WdCb3CL3UpdUM3dmNv5kJqV4kv3XjmRVnGQ8ebxDfyudL_Dgup69IpDXrhfWX1WrZaIM9JtIoCp-JOroru2VkXXb9kU0smtKhkrhdWZaOe7dRt0bQsz6VYqF7Ky66BZJapKuyKZdkVQstXKMFaST5cX0P0ZhfCclm82EWX0ykeuUrxXHOOZ4_sAIsuvV52DzKHBUtxbrrXe8DbLm-V3gWCUx1CAncbBUfcf7QIMOgeiWWf549bxwv3yIyCsYw4nHvEgWNVMMoTCiGO3KrWKdPfibOtZc6eHabtZfcFT6Qeff6GOEI1DOnPyWopQTmXrHZY0zqpzMpaOinjf0joZr_OoOrtvzbDnNXCeWR5Jx2dykBzy1ThZCq3AweD3R44O8ZQSIWc6-Dh5HCWnFD7RTX4BzTbrMZ-pypV0cKV_IU5RoYosnHgs0WJL1nl8BJRhnHY5wKW72RF6dTaoFSxdvRaEMKSpq073pY4Xa5Yo2FmXfGkCuG0-mANdoN9ayzd4VWnJetEAYa6QpqBtSxwbgDeaiFoDUjWOjh_biWonqVwTCyBBJ0nVhdAABHJtFuvZa0JYQB81iKF9wIALyFJtgZ5Ew6sZIT2EgS5ZV2WiA5LRqCxpuxqLvUcedVM7PfeTJY2AoCJ4f8Wh8zizhUsh3gzDMCQuNOHE6wOpnTqGcg51gnF1kXZoGTSctS1S6Nw1MVqBRdbfZz_drNafJt_WdLV9fJ2NX-4AwXsLjX4dlvpJ4zCoSJls2QKPT4TnGyUQ2w8M7Y-DmokhfoE6SqMmHqtH0aVxeBhxKrw9UjVK0Z7oRZ_rbShmEKuj_M9gd7BnhQs6JSXIQU533oK0rF79zno_tPN_OGGNF2qBcoIVIAioCrrVkf_TdtWjS7q6FLHGXDo0ik01Ktzp1VUpr8jdOCrapoOJkqXyMsCIYznHbKrxmySBtFuqn1A6myC_IqdOsFCTNZw9LDeyZB0uWI6GtVdQRqOM7Z9wnloQYSIDurZlZvu1NYa93W5hisSCKbbIqc3o8D5g3D1T6z6J1b9H8Qqr_eTa13zGtHb8sJM0n7yC1o9LeQKTqgrzWVXcL2K3OuBO1ZAuBBVTDDUR6JRPdq7qf8KuX8nEVnMPzgT_wb_yG1vRJqBrUA0IEs923HWVa5pSON9FYIG1H128RNnaZhJFgk684iJSogK_rz53tgP9zUs3cSMrzbwJIdFNXtaQeKwOcSySAcfrNU9r2l9fxg2BvUXnjq-Y3balFN0vFfus2QSeEDqANg7AsxgRacAQ2APal2w_CMiYS5175GcCVMKliNM9FiIcZqe5fCgM2LkHxhFbuKyyAtcslrBCRE-5ArpxnK1RE_UspioWlO7az6u4eMFoDJiEwzPk3lBhP5gIOMlovDtgyn88bsx8kUP-C-4Q3NbPHTcdntXiKh_NCNLuWKN4macmLg3ofOz6MQLE93DjA4RHh0iTOTs1UM0xmcGXjSCPfSuc-OOAGuEOxrhpixyEZMPWPbeDbc_4Lej6HAPEh5Lfh9-evzRefBHMga8Ef74CH_gh_6b-FGefC7uGN-oQu6gjvC_mDvbAULgGx0gGTqZ51NXBuJ_5-THkQdCI06zUdyQbhIJQV49s04cA2mdFNPZ5UODGUDtUesAPE4ZaZqyJBs61r0GuktwfzHeLONAM4I7Thgpp1nm_wTcO1vhj2ywHzqTaF3XB5QRVnokWh7RaIA1l2vGv_cJ-YD6dlsd3OhPRJxlIjKkDoBHCQmQPe71F1cWwA2KtitbqH_u2qpD5EkG04tDsXZTrGHrff0wWPIRuUrWDyj--eZzZVuDQwwbLdX12AdZvLHK3m69segTPp1aMohj6HKK9ReZjYd3Ep8fEeyFMO-t_Zo0rbAzKL3_08lV1cL6rsdFVfVUq1audqXVYFPf_a7QqchWvrHRvyH4e48JmAOgw6iMEYTWbpOMQcsjMwiGZhD5NKEzekIz_emtZTxL3rVyJ5B31WYn4fHAA_cRvHAET_h-LOMhPHQbaOP22hniOyMyGgUcjEfIohEyzpgfRGPB6d4ILq6vMQvU3Sdl9_pR3uf5J9GH3Ae4Efp4LFeU4oyNvN_iPBzise-xx5hfHPJ91dVpmfMEoEaod_k9jFw5E6nPvRTWwL2VvhwYhc95XbPv2sX9a75h9aH2094E9x6NYeCxVOKnwffdsC3A07FZzI4gsuCnGooBSRoMWgfdorjHJH03IPrEv0jX168UBnRH6VVEmS9chpZE6wPxh9XtasDkR30J12qLeq2ByIgLPUIfZSG4GPq_hF9i357wzgQPb4S6Qt-X6Ds7aU1Xv7nZosHRkw9yrW_DjAETE35fI2Mvw7LeFXc0sAdWLojoDIfGdKcavX5V5DyaMSnROx-8ZPa3eeezF1JR6nw1J4d7GrJtzMyNeQG5u0_Rdx2nbjaTRruXAzqDeaM18_auOX6fdiEufTHzZ-yiVW0uL68HL98afT3CtMRZrgS536jhRcpFV-eX77-7DcM48i82lwl1Z34QC2RFEQazkCVxkqaw6TiQgs_iC_OKsrmchFAkLeQTMST0G6JwcaEurcYodBkEXjJlUZR5YSiSiHs0Cb1J4Ep4WD7VOKZlvb6oLw2ktFs3mMxVA6HsJ1E1wu6kNOxAn3Xtpqwvv83nXVvesRbHNuwvDfz_AneEBZM">