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

    <tr>
        <th>Summary</th>
        <td>
            [Flang] flang-new crashes on a program that includes a submodule
        </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/38qrv9jxc

Reproducer:
```console
module m
  interface
    module subroutine s
    end
  end interface
end

submodule (m) sm
  procedure(s), pointer :: p
 contains
    module procedure s
    end
end
```

Stack dump:
```console
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-20240608/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-20240608/bin/.. -mframe-pointer=all -o /app/output.s -x f95-cpp-input /app/example.f90
 #0 0x0000000003850c68 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-llvmflang-trunk-20240608/bin/flang-new+0x3850c68)
 #1 0x000000000384e5dc SignalHandler(int) Signals.cpp:0:0
 #2 0x00007d2049a42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x00007d2049a969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #4 0x00007d2049a42476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #5 0x00007d2049a287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #6 0x0000000001e8f6d2 Fortran::lower::getOrDeclareFunction(Fortran::evaluate::ProcedureDesignator const&, Fortran::lower::AbstractConverter&) (.cold) CallInterface.cpp:0:0
 #7 0x0000000003e96c10 (anonymous namespace)::TypeBuilderImpl::genSymbolType(Fortran::semantics::Symbol const&, bool, bool) ConvertType.cpp:0:0
 #8 0x0000000003e97b26 Fortran::lower::translateVariableToFIRType(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Variable const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240608/bin/flang-new+0x3e97b26)
 #9 0x0000000003eaeae1 defineGlobal(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Variable const&, llvm::StringRef, mlir::StringAttr, cuf::DataAttributeAttr) ConvertVariable.cpp:0:0
#10 0x0000000003eaf88a Fortran::lower::defineModuleVariable(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Variable const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240608/bin/flang-new+0x3eaf88a)
#11 0x0000000003c2d8fb std::_Function_handler<void (), (anonymous namespace)::FirConverter::lowerModuleDeclScope(Fortran::lower::pft::ModuleLikeUnit&)::'lambda'()>::_M_invoke(std::_Any_data const&) Bridge.cpp:0:0
#12 0x0000000003c2c3f6 (anonymous namespace)::FirConverter::createGlobalOutsideOfFunctionLowering(std::function<void ()> const&) Bridge.cpp:0:0
#13 0x0000000003c2c8b0 std::__detail::__variant::__gen_vtable_impl<true, std::__detail::__variant::_Multi_array<void (*)(Fortran::common::visitors<(anonymous namespace)::FirConverter::run(Fortran::lower::pft::Program&)::'lambda'(Fortran::lower::pft::FunctionLikeUnit&), (anonymous namespace)::FirConverter::run(Fortran::lower::pft::Program&)::'lambda0'(Fortran::lower::pft::ModuleLikeUnit&), (anonymous namespace)::FirConverter::run(Fortran::lower::pft::Program&)::'lambda1'(Fortran::lower::pft::BlockDataUnit&), (anonymous namespace)::FirConverter::run(Fortran::lower::pft::Program&)::'lambda2'(Fortran::lower::pft::CompilerDirectiveUnit&), (anonymous namespace)::FirConverter::run(Fortran::lower::pft::Program&)::'lambda3'(Fortran::lower::pft::OpenACCDirectiveUnit&)>&&, std::variant<Fortran::lower::pft::FunctionLikeUnit, Fortran::lower::pft::ModuleLikeUnit, Fortran::lower::pft::BlockDataUnit, Fortran::lower::pft::CompilerDirectiveUnit, Fortran::lower::pft::OpenACCDirectiveUnit>&)>, std::tuple<std::variant<Fortran::lower::pft::FunctionLikeUnit, Fortran::lower::pft::ModuleLikeUnit, Fortran::lower::pft::BlockDataUnit, Fortran::lower::pft::CompilerDirectiveUnit, Fortran::lower::pft::OpenACCDirectiveUnit>&>, std::integer_sequence<unsigned long, 1ul>>::__visit_invoke(Fortran::common::visitors<(anonymous namespace)::FirConverter::run(Fortran::lower::pft::Program&)::'lambda'(Fortran::lower::pft::FunctionLikeUnit&), (anonymous namespace)::FirConverter::run(Fortran::lower::pft::Program&)::'lambda0'(Fortran::lower::pft::ModuleLikeUnit&), (anonymous namespace)::FirConverter::run(Fortran::lower::pft::Program&)::'lambda1'(Fortran::lower::pft::BlockDataUnit&), (anonymous namespace)::FirConverter::run(Fortran::lower::pft::Program&)::'lambda2'(Fortran::lower::pft::CompilerDirectiveUnit&), (anonymous namespace)::FirConverter::run(Fortran::lower::pft::Program&)::'lambda3'(Fortran::lower::pft::OpenACCDirectiveUnit&)>&&, std::variant<Fortran::lower::pft::FunctionLikeUnit, Fortran::lower::pft::ModuleLikeUnit, Fortran::lower::pft::BlockDataUnit, Fortran::lower::pft::CompilerDirectiveUnit, Fortran::lower::pft::OpenACCDirectiveUnit>&) Bridge.cpp:0:0
#14 0x0000000003c3ed55 Fortran::lower::LoweringBridge::lower(Fortran::parser::Program const&, Fortran::semantics::SemanticsContext const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240608/bin/flang-new+0x3c3ed55)
#15 0x0000000003bd0daa Fortran::frontend::CodeGenAction::beginSourceFileAction() (/opt/compiler-explorer/clang-llvmflang-trunk-20240608/bin/flang-new+0x3bd0daa)
#16 0x00000000038a19d5 Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240608/bin/flang-new+0x38a19d5)
#17 0x0000000003891337 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240608/bin/flang-new+0x3891337)
#18 0x00000000038a7a1d Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) (/opt/compiler-explorer/clang-llvmflang-trunk-20240608/bin/flang-new+0x38a7a1d)
#19 0x0000000001fdd798 fc1_main(llvm::ArrayRef<char const*>, char const*) (/opt/compiler-explorer/clang-llvmflang-trunk-20240608/bin/flang-new+0x1fdd798)
#20 0x0000000001ec5b54 main (/opt/compiler-explorer/clang-llvmflang-trunk-20240608/bin/flang-new+0x1ec5b54)
#21 0x00007d2049a29d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#22 0x00007d2049a29e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#23 0x0000000001fdc6fe _start (/opt/compiler-explorer/clang-llvmflang-trunk-20240608/bin/flang-new+0x1fdc6fe)
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 435dd9746107e13c2ad019be3bd34815f7d2360d)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/compiler-explorer/clang-llvmflang-trunk-20240608/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWt9z2yoW_muUF0YeCcn68ZAH147vdqaddpruvnoQHDncINAF5Dr71--AJNty88PpNL27O-00iQTinO_7zgEkgBjDtxLgOpi_C-arK9LZO6Wv70OitfpmrirFHq6_QKsV6yivBCAl0R-KVUrYIFkE0SqIFnfWtsbd4XWA19u-dqb0NsDrfwd4nRR_6V355572j_e_R6OgD3aCLOr_UyWNEtCXNop1AlDT3yHEpQVdEwpjAULDI6artOosl4DMsRIkG29AsvPmh9r-t-mqwViAiybAJTIHx61WFFinIcCFCXAZ4CVqlbeHHIdkgdrhWaqkJVya7yAebDyK8AhmVOIU260l9B6xrmlfUOzzh5vF7Y2To-EWEVR1W6ShVdoiq9BZtLi966oZVU2A10Lsxj9hq9WfQG2A19yYDkyA14h4_ajoGCB7B4hqYu5QRei91YTC7Emc0SyIys9abTVpENHbrgFpHQgU4LVqnReqmpYL0CHsW6E0aFcmiNyGDk7tr6zu5H2II5xGWVQEeF1xGeB1XynhGwprGqPQat4KQPsi22Rp2Ml7qb7JUHDZ7cOt7FB4i8JGg1CUWK5k2CgGArWcorDlNBSwA4Fwf8NN2HJAoSV6CzakbefshlmKwsYBQ6G7JaYJzYO0ZB8kK5cRAoUajOo0hZBx_VNozmYobGpNGgiHtAuSFREChcrZJ23rvHS27ezMoHCP6nIe0rYNuWw7e3wE9qRpBczqckgvFOAkQtE-Gv8lxTyiWYF8PvjMNg-mv_isubQ-wl9dyANcHB_S5NtGGauBNAHOXPfg0ro-FODip8Y5wO-i_QDSdcQDi3jKIoU5o-iWbyUR_yCSCeetGED1xWZGW5enkf85GMKDoZzhKC1Jiuc4GmgIXgV4PSTXIan6CjozapZ5eL7JBFwytVlmZU1Ra-80ELa550K8zoFvP3GQnoNO8wxtjef5WvBpnk1sz6e2cZHXCSKVG1NeZdk3nFjOTmMWQ1FnDKO10lYT2eeVUN_6WSJZbMF-0iuggmhYd5K6_hvgYvI47IjoiIUxYYcRdwVeCau0G56NHVL0KU-LyrhBzS6V3IF2nc0973N5RpVg7npJhHg_ziePJ1I-yUgoMxr7RCJSyYdGdQZJ0oBpfV8qe9dfH1p413HBQL9vWjEyl7cPTaWEqz2nbKAh0nI6dNL-wQnNSilx_FuigZYz9jjw4gx4XuHsSbFcoRHEwr-I5qQS8FWt3395DOmLCj8dkba2_cXo5ITgW40xPe9JvpZTYQgQiBGDmkv4Q6iKiF9EeXkyPN9azeX2C9SuuBFcnxYvrNWunHZ1X7wilrhCXnUW-tpDQoyOvk8KN7xGZ9zroiBPgu81-ehffEaz_-vp4Bkf0sFJMp1yKGZFXSFjWY9tMw5Sm7th_kmWO8VZj8-_Qr4wGKy5Pipy1KCX1Y2Et1Q9280OOvVNPvB7-Kfkg059TYBzQZqKkQDnA7DkZiDwccPlTt37l94Dq4V82DBiyUTyd5qz7ROJg89UokmdvZ451UDs0Ms-ddZwBp_qUeEPjjKX21Og9ThFTFVPbi4GnpwDL6roJLwbBpZwMd7tXCpKO95uQW521uXmhvuBfGl1By7oF1r42AnLN0Rr8jChsPC5Mw05VU2jhusdN9wqbYJk-WqRdffdjPpYNg1v88-k0YsmDpGbpuSP9ImfADq6EPWj3ehvwhxfiPmdUPTeDft_P2R8IeTlMGivuAZq-e6_QO3kQuifWpCL5fIx5MmNv8gmY8Chzy9_oMtcMEGeZ-wFTc4S5oIWT8TrgpaPyjUI1St2opXtWgFBsvwt3ovinSnHpYUt6I2BvzqQ1InYSb_6x5BQbt5corgTfua_OUxHbiI5vgH8nnB-Tzi_J5zfE87_7Zj5wtdAOv0aSIDN50_6Gz9IeoOn1WchbYk2Y6NxkfzJJarzpZ7xdqmkhb39BR_BPe3JR_B8okvFIkbO1gVq7fBJNsaOwR8gF8PHmSuqYMvlrV8xX3MBi3Fp7-149DAnPLLp-jGJSzZ_jsd6uHuGyHmwz4Xo2byXxhI3KT8S8cddvpdtZ52DXxDxXoiJUtN1zaKMkyR_PuJnRH0p7IF29hjsy6V-U7qezYRucZYYOYnZc3QHYkfWu2Gz6bXpsHjLqDoWE5qTtc24ZiwvC1TTeNMQZ-Fkr2ehNXn4AnWQLOkdOSypL4a3zmnZW1EYEJ5SwNF0O4HOq3mKHPw3gtB7mECIz_ZKSla-cvPIN5nYxOc2IY3QZuOabYwl2m5OOF7sBdKpl-Qs_jSrAfX23yyCzscBxLE2WSDQWrlpEXXSr-9ahYZ-hdy3B_G9Bi0qpS34hTGqNPiNZ2AvWPSlaOx8ozlUEy6AIdZ5Z8eds84ACne-DADxk9587gXtQBuuJIrLWTSLttwL97o995lrlSZzxso8zeIohzihmLAoLitIKpakRTyvc4aTLDoS_ep3qB25pza-h-f8hiPym97-zIIyfN9X-WFHCGArv4PwE3atp6cUrth1wsqkJFdwHedxXkZxkaRXd9eQkyqnrE5qnJU5i1kGNIUiyyNIMgLlFb8eDJcRnudxOsvrnNZ0niRJXhZsXgRpBA3hYuYAzZTeXvljC9dlWhTplSAVCOMPuWDs4QYYB_PVlb72wlfd1gRpJLix5mjBciv8yZi1bzFfoWOY_dEHMEhJRFA7vLTZO2LHAxIGEXQ4TXLVaXH94wcvehK7a_yfAAAA__8NmQG1">