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

    <tr>
        <th>Summary</th>
        <td>
            [Flang] fatal internal error: CHECK(symbol.has<DerivedTypeDetails>()) failed at /root/llvm-project/flang/lib/Semantics/mod-file.cpp(1766)
        </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/o9esMxsra

Reproducer (reduced and modified from the original: https://github.com/rzurob/llvm-test-suite/blob/ibm_fortran_tests/Fortran/IBM/execute/F2008/submodule/unit_test/mod_subprog/mod_subprog09.f08):
```console
module m
  integer :: i = 7
end module

module mm
  interface
 module subroutine sub(arg)

      interface
        integer function arg(x)
          use m
          real :: x(i)
        end
 end interface
    end

  end interface

end module

submodule (mm) s1
  contains
    module procedure sub
 end

end submodule
```

Stack dump:
```console
fatal internal error: CHECK(symbol.has<DerivedTypeDetails>()) failed at /root/llvm-project/flang/lib/Semantics/mod-file.cpp(1766)
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-20240526/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-20240526/bin/.. -mframe-pointer=all -o /app/output.s -x f95-cpp-input /app/example.f90
 #0 0x0000000003831688 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-llvmflang-trunk-20240526/bin/flang-new+0x3831688)
 #1 0x000000000382effc SignalHandler(int) Signals.cpp:0:0
 #2 0x00007c4647842520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x00007c46478969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #4 0x00007c4647842476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #5 0x00007c46478287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #6 0x0000000004e0b969 (/opt/compiler-explorer/clang-llvmflang-trunk-20240526/bin/flang-new+0x4e0b969)
 #7 0x00000000043ff570 Fortran::semantics::SubprogramSymbolCollector::DoSymbol(Fortran::parser::CharBlock const&, Fortran::semantics::Symbol const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240526/bin/flang-new+0x43ff570)
 #8 0x00000000043ff7a0 Fortran::semantics::SubprogramSymbolCollector::DoBound(Fortran::semantics::Bound const&) (.part.0) mod-file.cpp:0:0
 #9 0x00000000043ff466 Fortran::semantics::SubprogramSymbolCollector::DoSymbol(Fortran::parser::CharBlock const&, Fortran::semantics::Symbol const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240526/bin/flang-new+0x43ff466)
#10 0x00000000043ffa0d Fortran::semantics::SubprogramSymbolCollector::Collect() (/opt/compiler-explorer/clang-llvmflang-trunk-20240526/bin/flang-new+0x43ffa0d)
#11 0x000000000440303b Fortran::semantics::ModFileWriter::PutSubprogram(Fortran::semantics::Symbol const&) (.part.0) mod-file.cpp:0:0
#12 0x000000000440242a Fortran::semantics::ModFileWriter::PutSymbol(llvm::raw_ostream&, Fortran::semantics::Symbol const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240526/bin/flang-new+0x440242a)
#13 0x0000000004403502 Fortran::semantics::ModFileWriter::PutSubprogram(Fortran::semantics::Symbol const&) (.part.0) mod-file.cpp:0:0
#14 0x000000000440242a Fortran::semantics::ModFileWriter::PutSymbol(llvm::raw_ostream&, Fortran::semantics::Symbol const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240526/bin/flang-new+0x440242a)
#15 0x0000000004408422 Fortran::semantics::ModFileWriter::PutSymbols(Fortran::semantics::Scope const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240526/bin/flang-new+0x4408422)
#16 0x0000000004406d71 Fortran::semantics::ModFileWriter::Write(Fortran::semantics::Symbol const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240526/bin/flang-new+0x4406d71)
#17 0x0000000004408c45 Fortran::semantics::ModFileWriter::WriteOne(Fortran::semantics::Scope const&) (.part.0) mod-file.cpp:0:0
#18 0x0000000004408cd6 Fortran::semantics::ModFileWriter::WriteAll() (/opt/compiler-explorer/clang-llvmflang-trunk-20240526/bin/flang-new+0x4408cd6)
#19 0x000000000422ee37 Fortran::semantics::Semantics::Perform() (/opt/compiler-explorer/clang-llvmflang-trunk-20240526/bin/flang-new+0x422ee37)
#20 0x0000000003882ca5 Fortran::frontend::FrontendAction::runSemanticChecks() (/opt/compiler-explorer/clang-llvmflang-trunk-20240526/bin/flang-new+0x3882ca5)
#21 0x0000000003bb46e2 Fortran::frontend::CodeGenAction::beginSourceFileAction() (/opt/compiler-explorer/clang-llvmflang-trunk-20240526/bin/flang-new+0x3bb46e2)
#22 0x0000000003882075 Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240526/bin/flang-new+0x3882075)
#23 0x00000000038711c7 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240526/bin/flang-new+0x38711c7)
#24 0x000000000388803b Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) (/opt/compiler-explorer/clang-llvmflang-trunk-20240526/bin/flang-new+0x388803b)
#25 0x0000000001fc10c8 fc1_main(llvm::ArrayRef<char const*>, char const*) (/opt/compiler-explorer/clang-llvmflang-trunk-20240526/bin/flang-new+0x1fc10c8)
#26 0x0000000001eaf914 main (/opt/compiler-explorer/clang-llvmflang-trunk-20240526/bin/flang-new+0x1eaf914)
#27 0x00007c4647829d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#28 0x00007c4647829e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#29 0x0000000001fbff8e _start (/opt/compiler-explorer/clang-llvmflang-trunk-20240526/bin/flang-new+0x1fbff8e)
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 c87a7b3bdb673747f2242ba2edc7d5b2f5b53c30)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/compiler-explorer/clang-llvmflang-trunk-20240526/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWVtv2zgW_jXMCyFBomRdHvzg2vVMsVtsMSmwjwZFHdncUKRAUqkzv35BSr5IadMmUy8K7BhtIF7OOd93LhRFUmP4XgIs0eIdWmzuaG8PSi8fAqq1-mLuKlU_Lf-ATqu6Z7wSgJXEv6m6UsKiZIWiDYpWB2s741pki8h2P4yGSu8R2f6JyFaVYD4ejabD9OHvSSlojEihwT3WmMoat6rmDYcaN1q12B4AK833XFKBkhWeGeP20FchUy0iW_1nr1WFyFaIxzawYGxgem4BkW0l_ACv2l2jtNVU7ty4QWS7HdqIbD-8-4jIFo7Aei-0JVFUILI1fdWquheur5fcelFEtq2qd6avOq3201ZUho2TLM8uQlk0_GNKGiVg6B204nZoYcylhb1zSLJyVDlGyQbnwygMnulPslMNExW6oWycNYpg01da9ZZL_4hIQV10ymtV2P_m8vjS7ZA1vWSWK4m9fHE868DnX2-uGJ1-Gqg40ToiUvBngiDrscMx_QqM84RT11fmveSqcxRdvrUtIiU28UkXU9JSLs3F3Di304pB3evBb2eAc3OXFJmG-3revaXsAdd9230nLRpqqRioSSowaK20c9z69_frfyBSmKe2UiI8UIOS9QY0f4T681MHG7CUC4OS94j47CMlbigXrq4sdgWilD2VR6fVf4C5ZiOodAksuCuRe2iptJyZIaWDhgsIWdchUsR5lp3j9umf71f37z1xbjHFVb_HGjqlLbbqpSp11p-D4Mb04Gz6JYBLJvoafPEzTc0BV5Q9WE0ZhN90ZhSiqPyk1V7T1uVn34K0DoSjrjpnham24wJ0AMdOKA3a9Tn6gYPjHRFY3cuHgEQkjRYkc2sHlycvBRK-4KBhMQ6s5p0AfCyyXZYGvXyQ6osMBJf9MdjLHgf3OGg1CMWoK5igVTUI3HGGg46zQMAjCEyGBjdBxwEHluo92IB1vdMbZCkOWgcMB65JTRuYJ2npESUblx0CBxqM6jWDoOb6p9AMQxy0jaYtBJ3yKYiSDRUCB8rppy4Rtqq3XW9Dg4MjbspFwLou4LLr7WUKHGnbCQibcqwBjEgS4egYnX5JkcRZUWCfD35lME9mePikubQ-wp9dyBEpLpM0_bJTxmqgLXK4165QXKb7nP-JcUbkXXQcQV5WK0SSeMqCQNMwfM_3korfqayFs1aMoIZu4wsoWUX-_1kRGRXlLM3SvEjJgkQjjaEWx-Q6J9UwwEKjwszD8yITcMlUZ5mVDcOdPWig9e6BC_E6A15-YiCdg07zDO-N5_la8GmeTXQvprpJkTcJppVbU16l2QtONGfXMUshqsrsRhkzKp9YzyfWk6ZZ5BE-7TuG1D-vur55P-wjNG3v_Vq_VkIAs_41gJLVRg3diBQTLR3VBsY56wPV74RiD-7d5rYrvlZeNOp1Xk2_lYcGB0w8VMw9lNO_6KF3qpf13EEzJX7OnHDYUW1DBw9P3n_PyrecY06z7P87qunV_sAtlNHcQzSq_4qHxuawu7kdDRrVExqTBT9NoyRKqhdpfFT1lgv4t-b2FLhPvb2Q-05afj1kP5SXDi6ZwSUpoW-Be0rGl969v0TmDRQnIUvmIVtE5BcOWfp3yOLFzAdFSt4UMk_BfC9eTHXwP-HpaEx4ZjOeWZ3Hr-Xpn9-Ukjfh6ChMOObzWLJ08SaO_5Lfpfm1SP5w4RXPgNYvv8O_BXQlxE1fSwO0iZOn-w9CAJL85eqeNj-BbpRubwp7QHUNm8w-AgvC6Cw3Gq2kBVkPre3YWvmDp3FV6-WJzPoA7MHcksSIcUJi-g1YVWkG5CUSa1XDbyCvOVSw5_Lef727jBqHbsljgDnhQebBiPJXB2NGZF6vc0cMbD5IY6l03_bPX0pfN_lBdr11Bm6_pI2OmHgqmXoqj2OWvxzxGVHfOx4un4P9466-KV3PZkI3nSVG8WzPO0U7EruwfhwPvl6bDqtbRtWxmNCcbDrihsURK3DD4l1LnYarjdRKa_r0BzQoWbMD1ackXPnT1jWe9t2KwohwQmGyn4iBNmWcYgf_RhAGCxMI-ezcpqzLVx5keZGJzmKuE9II73ZObGcs1XZ3xfGHrUA6tVJO4181TQF40H-rCHobZxCX0WR1OenvJa0EYKvwWFeYqbalvmrwqlLaQu3wMaXBH4JD_R2Nvhefiu-k7nQ9UPfe2OUUrzeAg0ffB4D5VTXPreBH0IYrieMyjMJoz73jXnf-HzopVuQ0r5KqrrI8ydO8ISQlFSVQs7xeVKRZVIuEJZf4ffan5f5G6RuH8OM8f_iJ_QG8m90pw4_DkF92hIB6w_XPuSiYXuvc1cukLpOS3sEyzuMsT6KCJHeHZZKUVVkTklY0W9Qkr0kcJ_EiKosmgiKhd3x5UhwnaUSSMMpITeMC8qwgJV0wlEbQUi5CByhUen_nr1CWZZLGyZ2gFQjjb3UJGS94CFps7vTSO77q9walkeDGmosGy63wV8FbL7HY4F_8Kuqu12L59rumwVePS_LfAAAA__9JOoFh">