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

    <tr>
        <th>Summary</th>
        <td>
            After dcd74716f9d, Assertion failed: (getType() == V->getType() && "All operands to PHI node must be the same type as the PHI node!"), function setIncomingValue
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            c++20,
            clang:frontend,
            regression
      </td>
    </tr>

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

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

<pre>
    After dcd74716f9d ("[clang] p0388 conversion to incomplete array", by @urnathan, reviewed by @AaronBallman), compiling the FreeBSD editors/imhex port (see https://github.com/WerWolv/ImHex), which uses C++20, results in assertion failures:

```Assertion failed: (getType() == V->getType() && "All operands to PHI node must be the same type as the PHI node!"), function setIncomingValue, file /poudriere/jails/mainamd64PR261742/usr/src/contrib/llvm-project/llvm/include/llvm/IR/Instructions.h, line 2756.```

Minimized test case (mostly parts of `std::format`):

```c++
// clang -cc1 -triple x86_64-- -S -std=c++20 imhex-min.cpp
template <typename Visitor, typename Context>
void visit_format_arg(Visitor vis, Context) {
  vis(1);
}
template <typename = void> struct basic_data {
  static constexpr char hex_digits[] = "";
};
template <int, typename It, typename UInt> void format_uint(It, UInt upper) {
  { upper ? "" : basic_data<>::hex_digits; }
}
template <typename Char, typename OutputIt, typename UIntPtr>
void write_ptr(OutputIt, UIntPtr, Char) {
  auto write = [](OutputIt) { format_uint<1>(1, 1); };
  write(1);
}
template <typename OutputIt, typename T> void write(OutputIt, T) {
  write_ptr(1, 1, 1);
}
struct default_arg_formatter {
  void operator()(int) { write(1, 1); }
};
void vformat_to() { visit_format_arg(default_arg_formatter{}, 1); }
```

Backtrace:

```
clang: /home/dim/src/llvm/llvm-project/llvm/include/llvm/IR/Instructions.h:2755: void llvm::PHINode::setIncomingValue(unsigned int, llvm::Value *): Assertion `getType() == V->getType() && "All operands to PHI node must be the same type as the PHI node!"' failed.
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: /home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang -cc1 -triple x86_64-- -S -std=c++20 imhex-min.cpp
1.      <eof> parser at end of file
2.      Per-file LLVM IR generation
3.      imhex-min.cpp:9:49: Generating code for declaration 'format_uint'
4.      imhex-min.cpp:10:3: LLVM IR generation of compound statement ('{}')
 #0 0x00005575e44e8813 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x1ff7813)
 #1 0x00005575e44e65ee llvm::sys::RunSignalHandlers() (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x1ff55ee)
 #2 0x00005575e44e8cda SignalHandler(int) Signals.cpp:0:0
 #3 0x00007fcd087d6520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007fcd0882aa7c __pthread_kill_implementation ./nptl/./nptl/pthread_kill.c:44:76
 #5 0x00007fcd0882aa7c __pthread_kill_internal ./nptl/./nptl/pthread_kill.c:78:10
 #6 0x00007fcd0882aa7c pthread_kill ./nptl/./nptl/pthread_kill.c:89:10
 #7 0x00007fcd087d6476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007fcd087bc7f3 abort ./stdlib/./stdlib/abort.c:81:7
 #9 0x00007fcd087bc71b _nl_load_domain ./intl/./intl/loadmsgcat.c:1177:9
#10 0x00007fcd087cde96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x00005575e32116ed llvm::PHINode::setIncomingValue(unsigned int, llvm::Value*) (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0xd206ed)
#12 0x00005575e32220e8 llvm::PHINode::addIncoming(llvm::Value*, llvm::BasicBlock*) (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0xd310e8)
#13 0x00005575e4b2feb0 clang::CodeGen::CodeGenFunction::EmitConditionalOperatorLValue(clang::AbstractConditionalOperator const*) (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x263eeb0)
#14 0x00005575e4b1dedf clang::CodeGen::CodeGenFunction::EmitLValue(clang::Expr const*) (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x262cedf)
#15 0x00005575e4b1dbd1 clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(clang::Expr const*) (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x262cbd1)
#16 0x00005575e48743d0 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*, llvm::ArrayRef<clang::Attr const*>) (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x23833d0)
#17 0x00005575e4874fe1 clang::CodeGen::CodeGenFunction::EmitSimpleStmt(clang::Stmt const*, llvm::ArrayRef<clang::Attr const*>) (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x2383fe1)
#18 0x00005575e48742f1 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*, llvm::ArrayRef<clang::Attr const*>) (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x23832f1)
#19 0x00005575e4881a90 clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x2390a90)
#20 0x00005575e48e2ee7 clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x23f1ee7)
#21 0x00005575e49065d5 clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x24155d5)
#22 0x00005575e48feaa2 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x240daa2)
#23 0x00005575e48f0ce0 clang::CodeGen::CodeGenModule::EmitDeferred() (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x23ffce0)
#24 0x00005575e48f0d0c clang::CodeGen::CodeGenModule::EmitDeferred() (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x23ffd0c)
#25 0x00005575e48f0d0c clang::CodeGen::CodeGenModule::EmitDeferred() (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x23ffd0c)
#26 0x00005575e48f0d0c clang::CodeGen::CodeGenModule::EmitDeferred() (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x23ffd0c)
#27 0x00005575e48f0d0c clang::CodeGen::CodeGenModule::EmitDeferred() (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x23ffd0c)
#28 0x00005575e48f0d0c clang::CodeGen::CodeGenModule::EmitDeferred() (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x23ffd0c)
#29 0x00005575e48ef229 clang::CodeGen::CodeGenModule::Release() (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x23fe229)
#30 0x00005575e54b7724 (anonymous namespace)::CodeGeneratorImpl::HandleTranslationUnit(clang::ASTContext&) ModuleBuilder.cpp:0:0
#31 0x00005575e54b415e clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x2fc315e)
#32 0x00005575e614ab24 clang::ParseAST(clang::Sema&, bool, bool) (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x3c59b24)
#33 0x00005575e4ebecb0 clang::FrontendAction::Execute() (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x29cdcb0)
#34 0x00005575e4e3617f clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x294517f)
#35 0x00005575e4f8c983 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0x2a9b983)
#36 0x00005575e31af412 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0xcbe412)
#37 0x00005575e31ad350 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#38 0x00005575e31ad0e7 main (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0xcbc0e7)
#39 0x00007fcd087bdd90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#40 0x00007fcd087bde40 call_init ./csu/../csu/libc-start.c:128:20
#41 0x00007fcd087bde40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#42 0x00005575e31aa235 _start (/home/dim/obj/llvmorg-15-init-7191-gc807141d27e6-linux5-x86_64-ninja-clang-rel-1/bin/clang+0xcb9235)
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzdWl1z27YS_TXyC0YeEvx-8IMsx61n0ttM7KaPGhAAJaYUqQFAx76__u4ClETQSpu4Hes2GUYmQWCx5-xisQBYduL5alEZqYjgIouzMK0KQWY0n1E6S655w9r1LLkhuyDKc8K79lEqXXctMR2pW95td400kjCl2DM2oUtSPpNZHPSqZWbDWixR8rGWX6QYXi2Y6tpr1jRbfF1gDRRUN3W7JmYjya2S8vr-hkhRm07pGb2ttxv5RHadMqiblpJsjNnpWbSAl3Cta7Ppy0sQAw-_S_V71zzC3d32Z_k0dPFlU_MN6bXUZDmj13DRwCmn-8ZoQEOY1lIZRFexuunhDXYQ3MyC_W8auGvh1ZQC6qFia2kennfS0leQWXQDF_k0n0XvJm9oChf8oYumId1OKtYKjZx--PmOtJ2QZNtrQ0pp-dBsCzfQHDS0BftaMxpa0i3Aqm-5VUlLc4emATo_saaX9iVoCf3d7rpeqFoqKLz9DKojuVtWt2wr0vjDR5qGWQwCb3ut4FcrDr9gdaPqEu6a5nE736nus-RmeETjtLzpUZl9wd1H_Gm1Ub3VSF9uUAewryQ0S9LLA49jcn-p23pb_xfcxEjAzplGjfNtp03zTHZMgZG6ikArbZBwuKpObZlBOUDBV0zFnbGHUustxLo1mXMekjlAAx8mT3m6SuP5nMzvydx2cMP3bkKs-82B0Eu-2zlJRoLrM3D9WbRE07Roo0-1Ro9FsIeyJbAnnwz4gGv42NWCPGLFlVN_xdQacA5t8RW23zdDb8kG7Yl7mYcW7h5SdvMnGqEDYo_QPXH2ICXTNV8JZthYsjbM1BxHuIZ-d4rwDVMEYK9EDaNLQzDAOIDyrMtRT4H9_ViHujUeEXf-4293LZJitSMDE71tk7uaWIH0OxgcExLg1pVDL7eDNgRH4BEZdI-EWycZYYiuyYGuP-dtCeg9dX_tza43JzB8MMq37RdVG7naQTHNx632ldG4VroHivUw-m1Tx7Gl25Ngq3tMRcsQu7YOsSSDV5CxPYgT-X0-cxLqw8FWe4njag8TNGMO9sodNJzoMLilkBWDQIyjYRgYOCuNfR87t7HSDrHchr3ceoyjZgTVZ-OFm7oxOFBpun1UBhknBuZJxVAvEHiyo1PB7ZrxP4xiXH4tTLlHN9_ayeR2020xpop6e4jEQ3z9G2E4WkAATrAHy4GtaUcJTCn_wRnFPrycQfK-1fW6heA8DOtjS1sDFF64IEyOcyPAOteMmA0T86Xj9cP7d4t7iIB9ua0NYaTs1zDx23wCuviTXOI047XWvcSpk4CWZCDe6sEV0xsIRHtrA1M76Eh1XAItguiuV64YW0LC0fEaxp8gqoeJm8NcZAaV7w0IIaLf7g4uE8Cr4oPq1optIeVa91vZYlR76S5d-XnQulPreZjMYW418ywswvma50EWxqGgmUznMCf3T8l8mP3auv3M5tYJ50o2c-DytqxbzAH-_owZovYQZ2RXYSyBCR38hDBDJDABEzumKK4mtTilmtus5f37T7-Qu49kLVsc--BYrlaEtfx-ogV6YGzd8KehOqjN0X1g6EKMARxOBlCWebNO5qTGp6SGAfxEKPWlMqg6pq9dDzBwFpVoFZdCZ_swkeHYcHFsRqOABE8B_EuSLJFxLPM8jEYDSj_rYUwq0Mz6wYNzpvxYSbEvK8iMlGRbO3aWZB8JseO38AYwdPAUVlUG2nvwwgm8NIF8_QS8j317DzGFNT_DWGgkJvr5WRAkoKCHgE4NxAUjnq7HmccV68FTAvv_ICgaBGUVF0GeiTSBseHwNTajHhS1as_Xbe9e8EvdXaZWvZgmNPCUiz2ZOWUs42QFk-0GnEGs_qibZlXjugz90LnoJYhtd6aBP6PbcYtLjgMnhp8sPXaVfEtXkKfCWq_51k6y3A2oQyfpqU7Gzb5Vcl5MJGdT9uMsJWttDWaFulsUa5-etZA7bVdJuoZ1461itZZWNozgaDFiJvdFlzyrIsJKnFCsKCOcfb0H-96pGiITR3HFC3FhSVZts2o6QCg6XKJZwcD2nobhFmts9ZozJzkMs8zGwWG9E4WBL5sLWaTf54NRAU0OPogyvSEe0TBM5T-YTLhc4o3jgKABgPBQUh8lpYHMv4aSCbFH6cXpI6AxzGtcqVw3Hf_jPFjBK2TuYY28kFfSSpYB2aejcC0BKUyp3sPtsOPgCt9BagWrVlFjEWt-HTL193ujj4QtSo3p0anqbgV6FlZoGklA7dES-7SEQorq-2k5xcE7u8g-I1jKAYsHNpmCLUX4_WDv1m2npEB8_3eIAZCHOPUQ51kciVd4_b3ZGh8qloygjof-ArdKP0rIgZfjEWHMiBtc1L85PVEeAXqPnmxKTyVf4RD3Nhv5YUgCDjyS8ilJtHoNST8KPYDeo6fw6clDVrxqYnErLCTld1igd725591uElPHtfZM2LVR2XWNPWf4Sr-LtctN7pvuDIsoyP8CYGVMG_XXiLmkUmbfR9uwAJZLuy0ypumnpitZcwOLYd-tDu2dv321t5_2Fe_aqhvx_Pa8VSHQ4vHmLz6LIE1E8le8_dKJvpFHZ3P87EHeyApVtrx8C4uu_HyJLI3DBEB7rPgL2rySjNHXsfLvYyMQANZjI5qwEXD5lyFpygbwIJXCBcMZ9izA8SvQ2QMVT0GJgP_rQAk8rhuBSn5EUOmPCCr7EUHlPyKoSUImKwpF3wHqo2wk0_JceCTFc78jHn83PYnLLINYCGqxtmuft12vCR5g6p3dQS88WG7L4Q6WJ67Ybe4-KNbqxu6c_gaaT7Yu7h8OR_M25XHUXPd1I6R6uQuMGoYTDWGClmPG8XBQtgLk6n4r1et1eWNjVDwCJJ4xvEQjDWNWgjFGKn_AUx_Qe7LUkVs2ydTd37eGFPGkAI09SH62IEvJ_Z2xW4U2aMVivGR5krw3ZxojBRfc38aK_ORARmmYTbax8PsrqfC0mLVceigGYJ7FJqDP4n5FnAAMD6efL1Q5L_JojHNAdIT72HH2Et0LOs6SubKiBPU9fF7qEIWsikPI43m4wgMCb995vEWAX_J4-wJL4pdBgf1I6BwweSkBhIcym6AUURKQvemW4YMNDSOs91vWNJ8kP8TyE5CtgwpVP34tSOfTTgNYcNtzl7fmgwf-mvbF6ZAQRUBWKzykWYGDKrPiQMDqcEjENZ7hTM60hlOzU43sdyGJPZdLD73GwbRXCUW2DYKdduRuUfrcSneHURSF0iPLcXhKqAflFIqTwqMMJ_PkKJtOLMjwANNJfXMbFtD30Yb-Rz4X4ioSRVSwC1ObRr78_hbH47_qC9OLXjVXr_-KJonzKLzYXFVZEgtI0xJJw5RyWlai4LJgJUxomeTFRcNK2egr_DiO0sPHJsN3x1g0hPBqmJ2Ob5RcK6m1jfR0ltxc1Fc0oDSIg4Li_khwmYQJDeOMV4xKzmQxiwPISurmErW-BBe5UFcWQNmvNbxsam308SXT9khTXrkv9y5YbzadurqpYQmgnhcthB5-YRFfWbj_AzkqmL8">