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

    <tr>
        <th>Summary</th>
        <td>
            Compiling for OpenMP offload, get assertion failure  "All operands to PHI node must be the same type as the PHI node!"
        </td>
    </tr>

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

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

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

<pre>
    Compiling a test case involving Eigen using OpenMP offload targeting an AMD GPU, get the assertion failure:

``clang-16: /home/mdewing/nvme/software/llvm/git/llvm-project/llvm/include/llvm/IR/Instructions.h:2799: 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.``

#54831 has the same error message and stack trace,  it may be related.

Stacktrace
```
Stack dump:
0.  Program arguments: /mnt/nvme/software/llvm/git/usr/bin/clang-16 -cc1 -triple amdgcn-amd-amdhsa -aux-triple x86_64-unknown-linux-gnu -emit-llvm-bc -emit-llvm-uselists -flto=full -flto-unit -save-temps=cwd -disable-free -clear-ast-before-backend -main-file-name testEigenNoFit_cpu.cc -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu gfx900 -fcuda-is-device -mllvm -treat-scalable-fixed-error-as-warning -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -v -resource-dir /mnt/nvme/software/llvm/git/usr/lib/clang/17 -O2 -std=c++17 -fdeprecated-macro -ferror-limit 19 -fvisibility=protected -fopenmp -fopenmp-version=51 -fopenmp-version=51 -fopenmp-offload-mandatory -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -vectorize-loops -vectorize-slp -disable-llvm-passes -fopenmp-is-device -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -fopenmp-host-ir-file-path testEigenNoFit_cpu-host-x86_64-unknown-linux-gnu.bc -o testEigenNoFit_cpu-openmp-amdgcn-amd-amdhsa.tmp.bc -x c++-cpp-output tmp.jj
1.  <eof> parser at end of file
2.  Per-file LLVM IR generation
3.  :425:15: Generating code for declaration 'al::ay::triangular_solve_matrix<al::bf<double, 3, 3>, int, 2, 0, false, 0, 0, 3>::df'
 #0 0x00005587bea74c0f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x2c80c0f)
 #1 0x00005587bea72334 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f6f46ed3420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #3 0x00007f6f4697000b raise /build/glibc-SzIz7B/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #4 0x00007f6f4694f859 abort /build/glibc-SzIz7B/glibc-2.31/stdlib/abort.c:81:7
 #5 0x00007f6f4694f729 get_sysdep_segment_value /build/glibc-SzIz7B/glibc-2.31/intl/loadmsgcat.c:509:8
 #6 0x00007f6f4694f729 _nl_load_domain /build/glibc-SzIz7B/glibc-2.31/intl/loadmsgcat.c:970:34
 #7 0x00007f6f46960fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #8 0x00005587bd009261 llvm::PHINode::addIncoming(llvm::Value*, llvm::BasicBlock*) (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x1215261)
 #9 0x00005587bf2c621b (anonymous namespace)::ScalarExprEmitter::VisitAbstractConditionalOperator(clang::AbstractConditionalOperator const*) CGExprScalar.cpp:0:0
#10 0x00005587bf2c6500 clang::StmtVisitorBase<std::add_pointer, (anonymous namespace)::ScalarExprEmitter, llvm::Value*>::Visit(clang::Stmt*) CGExprScalar.cpp:0:0
#11 0x00005587bf2ce6f4 clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x34da6f4)
#12 0x00005587bf2622de clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*, clang::CodeGen::AggValueSlot, bool) (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x346e2de)
#13 0x00005587bf28440b clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(clang::Expr const*) (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x349040b)
#14 0x00005587beed8df7 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*, llvm::ArrayRef<clang::Attr const*>) (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x30e4df7)
#15 0x00005587beedfaa4 clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x30ebaa4)
#16 0x00005587bef4012a clang::CodeGen::CodeGenFunction::EmitFunctionBody(clang::Stmt const*) (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x314c12a)
#17 0x00005587bef5362b clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x315f62b)
#18 0x00005587befb52d9 clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c12d9)
#19 0x00005587befb0285 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31bc285)
#20 0x00005587befbb276 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c7276)
#21 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#22 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#23 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#24 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#25 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#26 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#27 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#28 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#29 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#30 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#31 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#32 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#33 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#34 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#35 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#36 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#37 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#38 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#39 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#40 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#41 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#42 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#43 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#44 0x00005587befbb1c8 clang::CodeGen::CodeGenModule::EmitDeferred() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c71c8)
#45 0x00005587befbdd30 clang::CodeGen::CodeGenModule::Release() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x31c9d30)
#46 0x00005587bfddbb9a (anonymous namespace)::CodeGeneratorImpl::HandleTranslationUnit(clang::ASTContext&) ModuleBuilder.cpp:0:0
#47 0x00005587bfdda385 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x3fe6385)
#48 0x00005587c0db2769 clang::ParseAST(clang::Sema&, bool, bool) (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x4fbe769)
#49 0x00005587bfdd92d8 clang::CodeGenAction::ExecuteAction() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x3fe52d8)
#50 0x00005587bf63d159 clang::FrontendAction::Execute() (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x3849159)
#51 0x00005587bf5c0dd6 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x37ccdd6)
#52 0x00005587bf720c77 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x392cc77)
#53 0x00005587bcf79eeb cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x1185eeb)
#54 0x00005587bcf75c0a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#55 0x00005587bcf772d5 clang_main(int, char**, llvm::ToolContext const&) (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x11832d5)
#56 0x00005587bcec4b15 main (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x10d0b15)
#57 0x00007f6f46951083 __libc_start_main /build/glibc-SzIz7B/glibc-2.31/csu/../csu/libc-start.c:342:3
#58 0x00005587bcf7083e _start (/mnt/nvme/software/llvm/git/usr/bin/clang-16+0x117c83e)
```

The attached test case has one of the intermediate files run through C-Reduce (tmp.jj).  The original, larger, test case is also present (original_code subdirectory)

[phi_node_assert.tar.gz](https://github.com/llvm/llvm-project/files/10934234/phi_node_assert.tar.gz)



</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUW19z26gW_zTKC4NHAv2xH_Lg2E03M3fvdpre3kcPgiOZLQINIDfZT38HZMeWm26bvX6oH6JYCDi_3-FwDoIj5pxsNcBtUtwlxfqGDX5r7G3H7BcBX6Vub2ojnm9XpuulkrpFDHlwHnHmAEm9M2oXSt_JFjQaXPj9Rw_69w_INI0yTCDPbAs-NtVo-fsavf_wn4SsUAse-S0g5hxYL41GDZNqsJDQZZKuk_RwLdOkTLliusVZmdAlSsj91nSQkPtuxJiQe72LBc40_iuz4adSuy4h9630-xvcW_MncH98JjVXgzip_PAxXLTzduABkpttE7ok1WIR5O6MFCjWpMuELj_89vBvI2C8ceAfNDed1O1npgZIyHzQUbUCSe0D4WPLfY1lQmK_yxcNJGXagv_03If2CVmghK4TukafcULfnT0hZUJKlBCyVAqZHizTwiFv0IffHpA2AlA3OI9qiFp2rAPkn_ug71hwqJWQLCEkIVVUP4jZqO_JCBBa5HOaoe2-bewMrDUWdeAcawExLZDzjH9B3jIOgS-SHnXsOSCwoJgPfZ_0-hhqj5VPxvlFdHyMxND1L_aQzhD6YE1rWYeYbYcOtHd7g-iCjn9kBYOzCbmvpU7I_cGgEOY8Q9hb2StArBMt15h1IvxtHUOYDU-Hp0_zclPmeNBftPmqsZJ6eMKtHhCGTnocjazmp3eDAyWddwg3ypuErptBqfEGD1p6hB3bAfbQ9S6ha_5VICykY7UC3FgAhLkCZjFzHtfQGAu4ZvwLaIFwx6TGjVSAdRxccD5Ow3-be-k3vB9mnCPcWVCGs2BeuDMCFOolR7iXHCvYgUIE4WbLVIO1wQ46pr3kWGoPtjdORrPEXWNZB7g3sTyha200INw0PeZGh0H0CV2Hmo022JpBC6lb3DG_RbjjZj-jjMVMSebAITy6Bcz7AbXN0yJNEW74IBiWDgvYSQ4Id0GHYWyAeew4U6Ne5BMIHM0PM4e_MquDd8EC6qHFUjcGf5FaBHUeBSMsvjLb4B1YJ41O6Drft2jBYj-ELhK6bkWN8A5hC84MlgMW0r7RvJSsD-aVkPusQvgPgrDzEVBC7hJyFwobAb0FHqYF7hi3BuFm5KRkJz3KFgg3O-lkLZX0zwld99Z44B4Ewo3pQXf9y48TWkX2o9K9Y8Yd04J5Y58Rblo98FPdzMgstOBPTxieOPTRGQaEJzc7CIqVfwFWxvSTAqf6ox2Pvje4eXcEcTLKDRPCOtkivN5s3q9Wm9-Wn99t1v9dfrwnm9X9w2b5-HtC1ycMtsZ5LO1o_H0wsm-Nf6z0vRk7C9PUvNZsL-IbRzDzXR9bPaH9KGLe99gMvh88Cg___HN0U9kMoYSuwDQJfYd6Zh1YxDwKk9Y0KIAeK5Lgz2Ckgf71r8-_o4ePqAUNNk7XsRKNvS1zUiR0mYULer-volvEg59vjEUCuGJjO5SQiqkx0rDn8b-3kul2UMxunFE72HTMW_mU0NWhZt0kdCXMUKvovOl4oe_C_30AI-GShkvDlIOXu_SlbuxJNAmpRvAoITRF6VOapmlRzKsaWJXztDmJhe7Z7cOpldpHr_9pjCDzYyXLvm6MC36gi3FvDylEwfn_4_wTcpc-ET5PedqEYPwCOjsDTSjN0aNsNVO_MS0U2ITM9xjGYjfjfQhVafx76YjsO6qasslLEDQnKdpsLDhvLGys31MYvcbeXF_MdHzQ-60FJmbOzNKIOMtzkk7w0omYRZWmaY0skw6C96oHqURQhJI1x49_PfxV3b3ckhnNgtoii4Tcz2bh7tkJ6F1Qm5ZPY8EuotFDuI1dz3hCl0UW7PKIJJ8iyZt5sUCsNpHpzyHxYtRGbBWFzIOQE5sqzoVUZBEWlJsR98ZBGxYHm11YaP2sXKl94B98Y-dazkbRRRrWaPOj7PI12RutNqHhRpgQlv8_kYsqGBHNjzKrqcwybUT5E4bDg8mMRk5pI8qJycxPTVyk6YKU2fdWt0yIw-p2Mi-PC9nT5e0dc5LfKcO_jGvci8zSjGQFKbMJhcUphYbwkmR1EMa00c-dGRwKKyPXR3eyGME9hmWEfffU23ed9HE1E5lIJ_2ydnEtszJaxJUPU3-EhbU3YbqPIT3W_puKKC469sRX74OgUeS3_iH4mfScQpGm6ETSo-98xGbsHXOQ0FVcSewHZXNYkZHV23m__kpy8OJR6JR1wPLTxLIzYlA2-SmxlRHwHvTk5n7Q8bVrLAw4j6inUELJiaZXqDZGXcrUaC5Y2eQvphbokCmdkhABb6ez1M8_weV73S7b8d3yURl_ec4lEAETznTKeZ7naf12zg-tNhbED3lfiscizdN6wiOfBHMQc9FU_8AUo_Wfz4fJwB2n09Ja9vwRwprq1G14f8I4rK0uRDqFXDTVhHRxRrph7B_Mv5Xp-vA2F6j-V_qtGfwjN3ETYtLXsdaBX3m00J-16Ispo2ZsOnvLiTKaPM0Ie7syDiV3Rjz_rSVciEiW84ywCZFqSqSgJXnjlNy_PMAq7v2cknivTM3UGria2vJL-7_3Tqv3h4oPujEnZnApbRRNSaYTez7VRl0QsfiRNn43YlBwHNSR9QH6Ghqp5cj2Z3Qzlp_s512IK8-IWEy4Ls64pmRe_DOuvwrHmpN5ccqRpGcca1KVb-W4hgasBfGyTXqR4ahIVU6gZudQMz7_RaBmfD6BSq4HKr0eqPn1QC2uB2p5PVCr64F6Hid_YajnYe7XhUq_iVa_LtTriVb0eqIVvZ5oRa8nWtHriVb0eqIVvZ5oRa8nWtHriVb59USr_HqiVX490Sq_nmiVX0-0ys-jlRA0fQvUj6CAObgsyoWg6QTlJFA1QtT1gv3owGgPdjzVeuj6fZ7AePz9yTLtVEw3-I8-PydaPn5aGe3h6bD_NxK-G6QS8PpxUV6dIWR0ur11N2Y9rYx2Q3c4tPsnWC6i4gZKOt27yk-jFk9FTapyshf5gVkHy8dPZxvH0LGzvfJLnurkTQ1VOdlIzBdnml4Q8drkWp5ufj8BHzzsiy5oqg0UREwmVDE9EC2pyIqJHu9tGE4tXsF3SWTzfJEVE8UV0xPNgqdCnO1Odr1UYB-080xzeF1336dyQfusOBdismFZTA8wK5LyanIItsd5JLHbZw1-e9QzIXnBHeEF4byanGIVk6DFm2oBUCPOs03HQgfz10_ctuzsmG2FpmVkFZN5L5mekM0LgMnxRJGfgS94ytBBz6vsU5zoJxQeO6bU55hEN_rbV5iU07350Mfev01OXISVu--42qI4g1URsXe1B63u872C9Kii5c8JvZAeKRET11pMohcHntdZgfZpNheQmIq0zqYSz_JtiiydU7TZKFnzjfPM-s1bsny4Gw55VePP-DD2E_N9aE7C9Sh-fjZC6ZwCGgVfSMkVn9OTw_5p6vV4_bQFxLxnfAviJOd_yxwyGpBpYip4TD_pQEjmIaY2OmQHjfzWmqHdohX-CGLgEGDvcyTJYoZQ6NxY2cqYc7ZCitl2TEk5-brAIaacQb0FBzoyPzTZxLxHN9RC2jhfno9cxmtx12_lRhsBm_EDg5lndtb-lRTrhMy33vcx7ZDcj9raDvWMm-6owbMPBiKzhNxn6YLmhOYJuf9O_2c44vVG3FKxoAt2A7dZWc3pnFTl_GZ7y_NqzhtWMyLmZdGUeZ2KqmFZSrJ6kef0Rt6SlNCUpousImU6n3FCs6IgZc2LlPICkjyFjkk1C4BnxrY30rkBbsuMpvRGsRqUi992EKLhK4oPE0KSYn1jb8eE9aF1SZ7GNPVjL156BSeffTTGnn3YcfiG45vvN9ClPkq4Gay6ffNQRYphrKIK_hcAAP__jal1xg">