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

    <tr>
        <th>Summary</th>
        <td>
            [Flang] fatal internal error: CHECK(kind_ > 0) failed at /root/llvm-project/flang/include/flang/Evaluate/type.h(149)
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          k-arrows
      </td>
    </tr>
</table>

<pre>
    Reproducible on Godbolt:
https://godbolt.org/z/Pqsv67rdW

Reproducer:
```console
$ cat test.f90
type(*) :: i
integer :: j(1)
j = (/(i, i = 1,1)/)
end
```

Stack dump:
```console
fatal internal error: CHECK(kind_ > 0) failed at /root/llvm-project/flang/include/flang/Evaluate/type.h(149)
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-llvmflang-trunk-20240504/bin/flang-new -fc1 -triple x86_64-unknown-linux-gnu -S -mrelocation-model pic -pic-level 2 -pic-is-pie -target-cpu x86-64 -mllvm -x86-asm-syntax=intel -resource-dir /opt/compiler-explorer/clang-llvmflang-trunk-20240504/lib/clang/19 -mframe-pointer=all -o /app/output.s -x f95-cpp-input /app/example.f90
 #0 0x000000000376d358 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x376d358)
 #1 0x000000000376accc SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f0503242520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x00007f05032969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #4 0x00007f0503242476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #5 0x00007f05032287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #6 0x0000000004cde5d9 (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x4cde5d9)
 #7 0x0000000003f998e7 (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x3f998e7)
 #8 0x0000000003ffeeb7 (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x3ffeeb7)
 #9 0x0000000003ff5474 Fortran::evaluate::ExpressionAnalyzer::Analyze(Fortran::parser::ArrayConstructor const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x3ff5474)
#10 0x0000000003ff58ed std::optional<Fortran::evaluate::Expr<Fortran::evaluate::SomeType>> Fortran::common::log2visit::Log2VisitHelper<0ul, 7ul, std::optional<Fortran::evaluate::Expr<Fortran::evaluate::SomeType>>, std::optional<Fortran::evaluate::Expr<Fortran::evaluate::SomeType>> Fortran::evaluate::ExpressionAnalyzer::Analyze<Fortran::common::Indirection<Fortran::parser::CharLiteralConstantSubstring, false>, Fortran::parser::LiteralConstant, Fortran::common::Indirection<Fortran::parser::Designator, false>, Fortran::parser::ArrayConstructor, Fortran::parser::StructureConstructor, Fortran::common::Indirection<Fortran::parser::FunctionReference, false>, Fortran::parser::Expr::Parentheses, Fortran::parser::Expr::UnaryPlus, Fortran::parser::Expr::Negate, Fortran::parser::Expr::NOT, Fortran::parser::Expr::PercentLoc, Fortran::parser::Expr::DefinedUnary, Fortran::parser::Expr::Power, Fortran::parser::Expr::Multiply, Fortran::parser::Expr::Divide, Fortran::parser::Expr::Add, Fortran::parser::Expr::Subtract, Fortran::parser::Expr::Concat, Fortran::parser::Expr::LT, Fortran::parser::Expr::LE, Fortran::parser::Expr::EQ, Fortran::parser::Expr::NE, Fortran::parser::Expr::GE, Fortran::parser::Expr::GT, Fortran::parser::Expr::AND, Fortran::parser::Expr::OR, Fortran::parser::Expr::EQV, Fortran::parser::Expr::NEQV, Fortran::parser::Expr::DefinedBinary, Fortran::parser::Expr::ComplexConstructor, Fortran::common::Indirection<Fortran::parser::SubstringInquiry, false>>(std::variant<Fortran::common::Indirection<Fortran::parser::CharLiteralConstantSubstring, false>, Fortran::parser::LiteralConstant, Fortran::common::Indirection<Fortran::parser::Designator, false>, Fortran::parser::ArrayConstructor, Fortran::parser::StructureConstructor, Fortran::common::Indirection<Fortran::parser::FunctionReference, false>, Fortran::parser::Expr::Parentheses, Fortran::parser::Expr::UnaryPlus, Fortran::parser::Expr::Negate, Fortran::parser::Expr::NOT, Fortran::parser::Expr::PercentLoc, Fortran::parser::Expr::DefinedUnary, Fortran::parser::Expr::Power, Fortran::parser::Expr::Multiply, Fortran::parser::Expr::Divide, Fortran::parser::Expr::Add, Fortran::parser::Expr::Subtract, Fortran::parser::Expr::Concat, Fortran::parser::Expr::LT, Fortran::parser::Expr::LE, Fortran::parser::Expr::EQ, Fortran::parser::Expr::NE, Fortran::parser::Expr::GE, Fortran::parser::Expr::GT, Fortran::parser::Expr::AND, Fortran::parser::Expr::OR, Fortran::parser::Expr::EQV, Fortran::parser::Expr::NEQV, Fortran::parser::Expr::DefinedBinary, Fortran::parser::Expr::ComplexConstructor, Fortran::common::Indirection<Fortran::parser::SubstringInquiry, false>> const&)::'lambda'(auto const&), std::variant<Fortran::common::Indirection<Fortran::parser::CharLiteralConstantSubstring, false>, Fortran::parser::LiteralConstant, Fortran::common::Indirection<Fortran::parser::Designator, false>, Fortran::parser::ArrayConstructor, Fortran::parser::StructureConstructor, Fortran::common::Indirection<Fortran::parser::FunctionReference, false>, Fortran::parser::Expr::Parentheses, Fortran::parser::Expr::UnaryPlus, Fortran::parser::Expr::Negate, Fortran::parser::Expr::NOT, Fortran::parser::Expr::PercentLoc, Fortran::parser::Expr::DefinedUnary, Fortran::parser::Expr::Power, Fortran::parser::Expr::Multiply, Fortran::parser::Expr::Divide, Fortran::parser::Expr::Add, Fortran::parser::Expr::Subtract, Fortran::parser::Expr::Concat, Fortran::parser::Expr::LT, Fortran::parser::Expr::LE, Fortran::parser::Expr::EQ, Fortran::parser::Expr::NE, Fortran::parser::Expr::GE, Fortran::parser::Expr::GT, Fortran::parser::Expr::AND, Fortran::parser::Expr::OR, Fortran::parser::Expr::EQV, Fortran::parser::Expr::NEQV, Fortran::parser::Expr::DefinedBinary, Fortran::parser::Expr::ComplexConstructor, Fortran::common::Indirection<Fortran::parser::SubstringInquiry, false>> const&>(std::optional<Fortran::evaluate::Expr<Fortran::evaluate::SomeType>> Fortran::evaluate::ExpressionAnalyzer::Analyze<Fortran::common::Indirection<Fortran::parser::CharLiteralConstantSubstring, false>, Fortran::parser::LiteralConstant, Fortran::common::Indirection<Fortran::parser::Designator, false>, Fortran::parser::ArrayConstructor, Fortran::parser::StructureConstructor, Fortran::common::Indirection<Fortran::parser::FunctionReference, false>, Fortran::parser::Expr::Parentheses, Fortran::parser::Expr::UnaryPlus, Fortran::parser::Expr::Negate, Fortran::parser::Expr::NOT, Fortran::parser::Expr::PercentLoc, Fortran::parser::Expr::DefinedUnary, Fortran::parser::Expr::Power, Fortran::parser::Expr::Multiply, Fortran::parser::Expr::Divide, Fortran::parser::Expr::Add, Fortran::parser::Expr::Subtract, Fortran::parser::Expr::Concat, Fortran::parser::Expr::LT, Fortran::parser::Expr::LE, Fortran::parser::Expr::EQ, Fortran::parser::Expr::NE, Fortran::parser::Expr::GE, Fortran::parser::Expr::GT, Fortran::parser::Expr::AND, Fortran::parser::Expr::OR, Fortran::parser::Expr::EQV, Fortran::parser::Expr::NEQV, Fortran::parser::Expr::DefinedBinary, Fortran::parser::Expr::ComplexConstructor, Fortran::common::Indirection<Fortran::parser::SubstringInquiry, false>>(std::variant<Fortran::common::Indirection<Fortran::parser::CharLiteralConstantSubstring, false>, Fortran::parser::LiteralConstant, Fortran::common::Indirection<Fortran::parser::Designator, false>, Fortran::parser::ArrayConstructor, Fortran::parser::StructureConstructor, Fortran::common::Indirection<Fortran::parser::FunctionReference, false>, Fortran::parser::Expr::Parentheses, Fortran::parser::Expr::UnaryPlus, Fortran::parser::Expr::Negate, Fortran::parser::Expr::NOT, Fortran::parser::Expr::PercentLoc, Fortran::parser::Expr::DefinedUnary, Fortran::parser::Expr::Power, Fortran::parser::Expr::Multiply, Fortran::parser::Expr::Divide, Fortran::parser::Expr::Add, Fortran::parser::Expr::Subtract, Fortran::parser::Expr::Concat, Fortran::parser::Expr::LT, Fortran::parser::Expr::LE, Fortran::parser::Expr::EQ, Fortran::parser::Expr::NE, Fortran::parser::Expr::GE, Fortran::parser::Expr::GT, Fortran::parser::Expr::AND, Fortran::parser::Expr::OR, Fortran::parser::Expr::EQV, Fortran::parser::Expr::NEQV, Fortran::parser::Expr::DefinedBinary, Fortran::parser::Expr::ComplexConstructor, Fortran::common::Indirection<Fortran::parser::SubstringInquiry, false>> const&)::'lambda'(auto const&)&&, unsigned long, std::variant<Fortran::common::Indirection<Fortran::parser::CharLiteralConstantSubstring, false>, Fortran::parser::LiteralConstant, Fortran::common::Indirection<Fortran::parser::Designator, false>, Fortran::parser::ArrayConstructor, Fortran::parser::StructureConstructor, Fortran::common::Indirection<Fortran::parser::FunctionReference, false>, Fortran::parser::Expr::Parentheses, Fortran::parser::Expr::UnaryPlus, Fortran::parser::Expr::Negate, Fortran::parser::Expr::NOT, Fortran::parser::Expr::PercentLoc, Fortran::parser::Expr::DefinedUnary, Fortran::parser::Expr::Power, Fortran::parser::Expr::Multiply, Fortran::parser::Expr::Divide, Fortran::parser::Expr::Add, Fortran::parser::Expr::Subtract, Fortran::parser::Expr::Concat, Fortran::parser::Expr::LT, Fortran::parser::Expr::LE, Fortran::parser::Expr::EQ, Fortran::parser::Expr::NE, Fortran::parser::Expr::GE, Fortran::parser::Expr::GT, Fortran::parser::Expr::AND, Fortran::parser::Expr::OR, Fortran::parser::Expr::EQV, Fortran::parser::Expr::NEQV, Fortran::parser::Expr::DefinedBinary, Fortran::parser::Expr::ComplexConstructor, Fortran::common::Indirection<Fortran::parser::SubstringInquiry, false>> const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x3ff58ed)
#11 0x0000000003ff5a66 std::optional<Fortran::evaluate::Expr<Fortran::evaluate::SomeType>> Fortran::evaluate::ExpressionAnalyzer::ExprOrVariable<Fortran::parser::Expr>(Fortran::parser::Expr const&, Fortran::parser::CharBlock) (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x3ff5a66)
#12 0x0000000003ff67ff Fortran::evaluate::ExpressionAnalyzer::IterativelyAnalyzeSubexpressions(Fortran::parser::Expr const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x3ff67ff)
#13 0x0000000003ff6b95 Fortran::evaluate::ExpressionAnalyzer::Analyze(Fortran::parser::Expr const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x3ff6b95)
#14 0x0000000003ff6cb7 Fortran::evaluate::ArgumentAnalyzer::AnalyzeExprOrWholeAssumedSizeArray(Fortran::parser::Expr const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x3ff6cb7)
#15 0x0000000003ff6e8b Fortran::evaluate::ArgumentAnalyzer::AnalyzeExpr(Fortran::parser::Expr const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x3ff6e8b)
#16 0x0000000003ff7151 Fortran::evaluate::ArgumentAnalyzer::Analyze(Fortran::parser::Expr const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x3ff7151)
#17 0x000000000400505c Fortran::evaluate::ExpressionAnalyzer::Analyze(Fortran::parser::AssignmentStmt const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x400505c)
#18 0x0000000004015731 void Fortran::parser::Walk<Fortran::semantics::ExprChecker>(std::__cxx11::list<Fortran::parser::ExecutionPartConstruct, std::allocator<Fortran::parser::ExecutionPartConstruct>> const&, Fortran::semantics::ExprChecker&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x4015731)
#19 0x0000000004016c0f Fortran::semantics::ExprChecker::Walk(Fortran::parser::Program const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x4016c0f)
#20 0x00000000041190ad Fortran::semantics::Semantics::Perform() (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x41190ad)
#21 0x00000000037be965 Fortran::frontend::FrontendAction::runSemanticChecks() (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x37be965)
#22 0x0000000003ae8442 Fortran::frontend::CodeGenAction::beginSourceFileAction() (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x3ae8442)
#23 0x00000000037bdaf5 Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x37bdaf5)
#24 0x00000000037ad3b7 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x37ad3b7)
#25 0x00000000037c3dcd Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x37c3dcd)
#26 0x0000000001f2b608 fc1_main(llvm::ArrayRef<char const*>, char const*) (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x1f2b608)
#27 0x0000000001e1aaed main (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x1e1aaed)
#28 0x00007f0503229d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#29 0x00007f0503229e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#30 0x0000000001f2a56e _start (/opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin/flang-new+0x1f2a56e)
flang-new: error: unable to execute command: Aborted (core dumped)
flang-new: error: flang frontend command failed due to signal (use -v to see invocation)
flang-new version 19.0.0git (https://github.com/llvm/llvm-project.git b958ef19489e508e367ad530d4512b7710591550)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/compiler-explorer/clang-llvmflang-trunk-20240504/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsXFtv27gS_jXKCyFD98tDHlw73i1Ozm5O3bP7GFDUyOaGIrUU5Tr76w9IyRcprau0dREcqGibiBrOzDcz5EcJInFd0w0HuLXCd1a4vMGN2gp5-2RjKcWn-iYT-fPtB6ikyBtCMwZIcPSLyDPBlOXPLWdpOfOtUlWtr7yV5a027d2ZkBvLW_1jeauHv-tdFMv8z1a8_f-gFORRjxU57V8ieC0YdK1egAhWSEGtZkXqtK3quQLLSyxvbnkp0ir8OaLtPcoVbEAeWv-yvMS1vLS9-Rey_CUyXVeWl1DLWyBq2lzLWxg5faOTBp4PfDvHsFaYPKG8KauvYCiwwgxpvyTHDIGUQsNGi1_vFv-yvOSJ8vwRWf4dcjScAlMGOcIKWd5KCqEsb8XYrrQrKf4Coi8LhrmOL-WENTmctdztMGuw0k06SLOthh-kR0gP93fz9R2qm6ykCmGUNRskoRJSISXQIJdUbZtsRkTZefDSEVrXDdSWt0KY56hzB6ktICJxvUUZJk9KYgKzL8bMmVlO-iDFRuISYblpSuBKO6Hhi0pbIaKsKANpw75iQoLUbRqwrd0x0G0lG_5ke44XOKETWN4qo_wQF5vDJ2QXxEW2krRigPZJ9BgFdsOfuPjEbUZ5s7c3vEH2GtmlBCYIVlRwuxQ5MFRRguyKEpvBDhjy2gta2xUFZCssN6BsUjVarx0FyC61Y8jWl7gu7fqZK7y3_KUuAoZsCbVoJAE7p_I7YTKaHcQsb-WmyC4LiUuwK2EqzvKXmDFkC20HV5W21qiqUbMa2XtUpKFNqsqmvGrUSQT2uKwYnEYcsjzfQc7eOfzx4yj3wwSZujBDrX6u218eJOXKZPqjTr3lJSchiT89ilpJwKXlRWb4cWUGsRmTPy7flvfO2XdOHqtfo3AHKDAhBK3phmP2K-Y509aSzqm2uZ6RSterY_4dFXmdorhwQsf3Ai_0nA5Gm5SuyI7F1d4gs1rMIuOe6dJzzu_rTKO0IKhSWwk4f3yijL3OgOnfMxAMnQ7iCG1qg_O1zgdx1NMd9nV7SVz4CGd6bnmVZtOxpzk6z1lAcgjzK1VMp7xnPe5VTJGmCcRXqtdWec960rdeAGRXs26U96ynA-thEAdoJaSSmLcjGg6MY67u9pWEuqaCzzlmz_-0BO_PuyvLS3qdKyzro4iU-HkheK1kQ5SQSJOoMrPEtaaHFs8RsJ4dnCHgBHJUq7z1UVSaFTCz_MVXgnBZYi1K-KgXMf6d5v2eJBFlKbrfmdh4O1pT1V7ei433h778FVil47ZwGqYn0bj9cWU_f4KJ76mtgZnzOL7nOZVAtMdDsfMSXGyxvKcKJGamEDFX6yarlaSaXReowKyGLhBfVDJQ8EL2G_xagpmhlZCjvRiOpovCayPUSLjU4Rv8XjXcyHyAAiRwvRYY6X5bN2Y1gSVwtYVarzNH9fgvx_L5gTVj5X-DjVkxjxP-_eNYx0ES4OpekJEdllBQDrlxf6wN8Qkup_Yk---GKVqxsaqXdEfzsVGZ5_lIyXWT6QeCl8Pi8-ILwQkeK3w_NjX3Y4vv7j9jy2Ksxl9GC44FM_9tOVLy9w-jYf8xGvdo0a6839FX1PdC6MeQ_Q-elo5z-nv-d0NbZ46zkp6YkiPL7bCkehKfuGXilolbJm6ZuGXilu_hlvOH2raD5cUMl1mOLS-2vAQ3SvSEzp-5Jjaa2Ghio4mNJjaa2OjHslH_qWd6tzcx3sR4E-NNjDcx3v8X403v9iZumbhl4paJWyZueQPv9qLuI7iGmy9xc8REyxgTSU0kNZHURFITSU0kdTWSut5XlQnkva8q3eFXlTiK3uKnhLr9d_mH5tyMvXjr-DKNd5c-aNUiZ-G-UBOamt8xQZ6umhQcRb2keIOkRHFRfEvQ3uslgaI7YM_djXWTwVG4fkWMrodeg-uh94foszT8njfUbwJkloY9kMEQJMniSyDn3f6bz0JsB8efW8FgXtdNCfma_gNmLfY20JOzj9c1-nCIHpLsu9C_DZiQZD2Y0QBm7IbuN8N8ExA1gh7E3haMwHFCJyRXGqxzsylSx2etSnV9uB2aHtykD9cNY99FO0HzL1PIn5g9DfmqhhJzRUl9CspiC-QJ5OBN6OMj2e9dt71gtH7xuNmvAiCNJuwHLNVx8dJ7aMXMbKATL_h6hJ7hKmVAmxcwXTVJJge9JKWDJEXEKUb7esrZhVI87Ir8CTVovD-H5_U2wgSumzo4vwhv3b98AFkIWRp_r-V261XP7cH2vgzSaEDrhRRcAe9KddVdzbuFtW6TDT-AMfmqrwmi87EHor8yw5AEgXcJxELk8AvwcwwZbChfm12mK8qgu3VNHK2bPRz-IBk5Ll6djAGQ4XgZBqJF8968niLwuRnk8ybf86pR2sBPILg2EL1I9RdqMc794ULtK0BbEjRT6inZ40N9VbgGTQ9uf2UWEz8n-SW4HbAT6l23Qfu15TC_IkyDogeztzJzCy-LnAQVxH0ssdZwti_arKI_QGH5C7LFx1XWvHuV2G-7FoTOwx6E3srLBRdjyJF2_0outBZ6LiSDfcVpnr5yo7Xp0tOZDnVC4KDHR93tsVZYqsczjKOtQNCz0t8x7xYeDiNArf6rZVDbODpxuuvPTwdPNBxnDJASqBtXiIiyxGbUoHkmpIJc-0eEBHNYw1lCPq_RtKLD4DuoOxxlkTfG2GmXeVMDsnemDQDRs9E8tIJ2IPUyHrnpzJk5G2oC97pzKma6V5aGCRRuGiQphE4CfhTjPPSdPAhdL4tj1wlTNwxP-ftoTnXQ4L50WEQnZzbnI3NQhJauRE337S0z7TAG-ZLKH3OgRf-UkZv81s9TP8U3cOvGbpC4bpy6N9vbJHYIhKmfpXEcR5kb-0nhOCQM0oi4aUpu6O1BsZP4ke_OUj8pch8XSexEXuymVuBAiSmbaYdmQm5uzFEft6nrhP4Nwxmw2hwb43nd0SOeFS5v5K0JfNZsaitw9JNEfdKgqGLmrJmV6REu0ds4GeWmkez2248-MSH5XwAAAP__rAEk9Q">