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

    <tr>
        <th>Summary</th>
        <td>
            [Flang] fatal internal error: CHECK(p) failed at /root/llvm-project/flang/include/flang/Semantics/symbol.h(791)
        </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/s9f8bMrh8

Reproducer:
```console
$ cat test.f90
interface a1
  subroutine s1
    interface a2
 subroutine s2
        real x(k)
      end subroutine
    end interface

    real y(k)

  end subroutine
end interface
end
```

Stack dump:
```console
fatal internal error: CHECK(p) failed at /root/llvm-project/flang/include/flang/Semantics/symbol.h(791)
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-20240518/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-20240518/bin/.. -mframe-pointer=all -o /app/output.s -x f95-cpp-input /app/example.f90
 #0 0x0000000003870558 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x3870558)
 #1 0x000000000386decc SignalHandler(int) Signals.cpp:0:0
 #2 0x00007b0924a42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x00007b0924a969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #4 0x00007b0924a42476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #5 0x00007b0924a287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #6 0x0000000004e468c9 (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x4e468c9)
 #7 0x00000000041d90f2 Fortran::semantics::DeclarationVisitor::CheckForHostAssociatedImplicit(Fortran::parser::Name const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x41d90f2)
 #8 0x00000000041d91c9 Fortran::semantics::DeclarationVisitor::ResolveName(Fortran::parser::Name const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x41d91c9)
 #9 0x00000000041d9bbd Fortran::semantics::DeclarationVisitor::ResolveDataRef(Fortran::parser::DataRef const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x41d9bbd)
#10 0x00000000041da3c0 void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor>(Fortran::parser::Designator const&, Fortran::semantics::ResolveNamesVisitor&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x41da3c0)
#11 0x00000000041d113e void Fortran::parser::IterativeWalk<Fortran::parser::Expr const, Fortran::semantics::ResolveNamesVisitor, Fortran::parser::Expr::IntrinsicUnary const, Fortran::parser::Expr::IntrinsicBinary const>(Fortran::parser::Expr const&, Fortran::semantics::ResolveNamesVisitor&) resolve-names.cpp:0:0
#12 0x00000000041d2acc std::enable_if<UnionTrait<Fortran::parser::ArraySpec>, void>::type Fortran::parser::Walk<Fortran::parser::ArraySpec, Fortran::semantics::ResolveNamesVisitor>(Fortran::parser::ArraySpec const&, Fortran::semantics::ResolveNamesVisitor&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x41d2acc)
#13 0x00000000041e32da void Fortran::parser::ForEachInTuple<1ul, void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::DeclarationTypeSpec, std::__cxx11::list<Fortran::parser::AttrSpec, std::allocator<Fortran::parser::AttrSpec>>, std::__cxx11::list<Fortran::parser::EntityDecl, std::allocator<Fortran::parser::EntityDecl>>>(std::tuple<Fortran::parser::DeclarationTypeSpec, std::__cxx11::list<Fortran::parser::AttrSpec, std::allocator<Fortran::parser::AttrSpec>>, std::__cxx11::list<Fortran::parser::EntityDecl, std::allocator<Fortran::parser::EntityDecl>>> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&), std::tuple<Fortran::parser::DeclarationTypeSpec, std::__cxx11::list<Fortran::parser::AttrSpec, std::allocator<Fortran::parser::AttrSpec>>, std::__cxx11::list<Fortran::parser::EntityDecl, std::allocator<Fortran::parser::EntityDecl>>>>(std::tuple<Fortran::parser::DeclarationTypeSpec, std::__cxx11::list<Fortran::parser::AttrSpec, std::allocator<Fortran::parser::AttrSpec>>, std::__cxx11::list<Fortran::parser::EntityDecl, std::allocator<Fortran::parser::EntityDecl>>> const&, void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::DeclarationTypeSpec, std::__cxx11::list<Fortran::parser::AttrSpec, std::allocator<Fortran::parser::AttrSpec>>, std::__cxx11::list<Fortran::parser::EntityDecl, std::allocator<Fortran::parser::EntityDecl>>>(std::tuple<Fortran::parser::DeclarationTypeSpec, std::__cxx11::list<Fortran::parser::AttrSpec, std::allocator<Fortran::parser::AttrSpec>>, std::__cxx11::list<Fortran::parser::EntityDecl, std::allocator<Fortran::parser::EntityDecl>>> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&)) (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x41e32da)
#14 0x00000000041e3637 void Fortran::parser::Walk<Fortran::common::Indirection<Fortran::parser::TypeDeclarationStmt, false>, Fortran::semantics::ResolveNamesVisitor>(Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::TypeDeclarationStmt, false>> const&, Fortran::semantics::ResolveNamesVisitor&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x41e3637)
#15 0x00000000041ea58c void Fortran::parser::Walk<Fortran::parser::DeclarationConstruct, Fortran::semantics::ResolveNamesVisitor>(std::__cxx11::list<Fortran::parser::DeclarationConstruct, std::allocator<Fortran::parser::DeclarationConstruct>> const&, Fortran::semantics::ResolveNamesVisitor&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x41ea58c)
#16 0x00000000041eb9ed Fortran::semantics::ResolveNamesVisitor::Pre(Fortran::parser::SpecificationPart const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x41eb9ed)
#17 0x00000000041e9a89 std::enable_if<TupleTrait<Fortran::parser::SpecificationPart>, void>::type Fortran::parser::Walk<Fortran::parser::SpecificationPart, Fortran::semantics::ResolveNamesVisitor>(Fortran::parser::SpecificationPart const&, Fortran::semantics::ResolveNamesVisitor&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x41e9a89)
#18 0x00000000041e9dbe void Fortran::parser::Walk<Fortran::parser::InterfaceSpecification, Fortran::semantics::ResolveNamesVisitor>(std::__cxx11::list<Fortran::parser::InterfaceSpecification, std::allocator<Fortran::parser::InterfaceSpecification>> const&, Fortran::semantics::ResolveNamesVisitor&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x41e9dbe)
#19 0x00000000041ea066 void Fortran::parser::ForEachInTuple<0ul, void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::Statement<Fortran::parser::InterfaceStmt>, std::__cxx11::list<Fortran::parser::InterfaceSpecification, std::allocator<Fortran::parser::InterfaceSpecification>>, Fortran::parser::Statement<Fortran::parser::EndInterfaceStmt>>(std::tuple<Fortran::parser::Statement<Fortran::parser::InterfaceStmt>, std::__cxx11::list<Fortran::parser::InterfaceSpecification, std::allocator<Fortran::parser::InterfaceSpecification>>, Fortran::parser::Statement<Fortran::parser::EndInterfaceStmt>> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&), std::tuple<Fortran::parser::Statement<Fortran::parser::InterfaceStmt>, std::__cxx11::list<Fortran::parser::InterfaceSpecification, std::allocator<Fortran::parser::InterfaceSpecification>>, Fortran::parser::Statement<Fortran::parser::EndInterfaceStmt>>>(std::tuple<Fortran::parser::Statement<Fortran::parser::InterfaceStmt>, std::__cxx11::list<Fortran::parser::InterfaceSpecification, std::allocator<Fortran::parser::InterfaceSpecification>>, Fortran::parser::Statement<Fortran::parser::EndInterfaceStmt>> const&, void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::Statement<Fortran::parser::InterfaceStmt>, std::__cxx11::list<Fortran::parser::InterfaceSpecification, std::allocator<Fortran::parser::InterfaceSpecification>>, Fortran::parser::Statement<Fortran::parser::EndInterfaceStmt>>(std::tuple<Fortran::parser::Statement<Fortran::parser::InterfaceStmt>, std::__cxx11::list<Fortran::parser::InterfaceSpecification, std::allocator<Fortran::parser::InterfaceSpecification>>, Fortran::parser::Statement<Fortran::parser::EndInterfaceStmt>> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&)) (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x41ea066)
#20 0x00000000041ea444 void Fortran::parser::Walk<Fortran::parser::DeclarationConstruct, Fortran::semantics::ResolveNamesVisitor>(std::__cxx11::list<Fortran::parser::DeclarationConstruct, std::allocator<Fortran::parser::DeclarationConstruct>> const&, Fortran::semantics::ResolveNamesVisitor&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x41ea444)
#21 0x00000000041eb9ed Fortran::semantics::ResolveNamesVisitor::Pre(Fortran::parser::SpecificationPart const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x41eb9ed)
#22 0x00000000041e9a89 std::enable_if<TupleTrait<Fortran::parser::SpecificationPart>, void>::type Fortran::parser::Walk<Fortran::parser::SpecificationPart, Fortran::semantics::ResolveNamesVisitor>(Fortran::parser::SpecificationPart const&, Fortran::semantics::ResolveNamesVisitor&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x41e9a89)
#23 0x0000000004210e64 Fortran::semantics::ResolveNamesVisitor::ResolveSpecificationParts(Fortran::semantics::ProgramTree&) (.part.0) resolve-names.cpp:0:0
#24 0x00000000042114f6 Fortran::semantics::ResolveNamesVisitor::Pre(Fortran::parser::ProgramUnit const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x42114f6)
#25 0x0000000004212a04 Fortran::semantics::ResolveNames(Fortran::semantics::SemanticsContext&, Fortran::parser::Program const&, Fortran::semantics::Scope&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x4212a04)
#26 0x000000000426be51 Fortran::semantics::Semantics::Perform() (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x426be51)
#27 0x00000000038c2005 Fortran::frontend::FrontendAction::runSemanticChecks() (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x38c2005)
#28 0x0000000003bef85a Fortran::frontend::CodeGenAction::beginSourceFileAction() (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x3bef85a)
#29 0x00000000038c1415 Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x38c1415)
#30 0x00000000038b0d17 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x38b0d17)
#31 0x00000000038c745d Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x38c745d)
#32 0x0000000002020c08 fc1_main(llvm::ArrayRef<char const*>, char const*) (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x2020c08)
#33 0x0000000001f0ede4 main (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x1f0ede4)
#34 0x00007b0924a29d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#35 0x00007b0924a29e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#36 0x000000000201fb6e _start (/opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin/flang-new+0x201fb6e)
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 881f20e958e80bd30463fc57d2d3e891bcb8a571)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/compiler-explorer/clang-llvmflang-trunk-20240518/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW9FyozrSfhpyo8IFAmO4yIXHic-k_n-3piaZ3UuXEI2tjZAoITLOPv2WBLaBOE6cxDmpc-yaSRkJtfrrr7uRZJpUFVsKgEtn_M0ZX12QWq-kurx3iVLyd3WRyuzx8ieUSmY1ZSkHJAX6Q2ap5NoJpo535XjTldZlZa7w3MHzZdM7kmrp4Pl_HTyvkjxO_6FWcXN783cjFNRWjhN5zT8qRSU5tK04RJRopKHSozzxmlYmNKicUEDEb1oQqupUyVozAajaNiLUuRW3rd078e5O81FAOFo7OL53cNLtApF1xu16TPt2ii7CrbTHnrRN5z55e2SByAbW6Yq51YTeo6wuyhesmBNNeCNbEI5AKWkMj2bfr2f_5-C4dHCCcsI4ZIho5OC5klI7eM75Q-GWSv4HqLnMORGGVyYorzPotNxCQYRmtDKMPxap5KOVg-NJ4m-h__j_6-nttUFdMI0ISuslUlBKpZGWaOBGTK_qdERl0SrxVBdWVTWY6RCxdrMaIb0CRBWpVigl9F4rQmH0rLG8keMlP5RcKlIgopZ1AUIbJYwFZGlmobIoGQflwrrkUoEybQaza9Sx6F2tanHvYg-H3tiPHTxPmdiYxhXwG7k59ZGrFSs5oHUcLaLQrcW9kL-Fy5mo1-5S1Mi9RW6hgEtKNJPCLWQGHJWMIrdk1OXwABzh5oJVbskAuZqoJWiXlrWR60YhcgujGHLNJakKt3oUmqyd4Mqwz5GroJK1ouBmTH0IzNEIuUWuSAFuKa2LOcEV4Ry50sgnZWlmqXVZ61GF3DXKk7FLy9Jloqz17hZYk6LksAty5ODAQ97a23yCeOKNxzGy_hBMnWBaPVbNlx-KCW0ZvjOUOzje3aTI74WstAJSODhy8MwEgnF4B8cfyrODv3nrVsld-nBw4PdRRBlQim7ZUhD-nYiMm9niVqmmuRrR0vipZ_9vBeFW0CT1EhySEI-x18LgLHXwvHWurVM1HXRUyVFk1bNDesoFfZlJlOQUlXqlgGSLe8b5cRPY8b0JwqHS4SRCy8riPFb5cBL1ZI_7snE8yQNEUpNTjpJsB_YkR13OQgijmJ7IY1rhvdknvdn9LPFyjOZSaUVE6_rbhGsvr4Byomzi-BermLb53QmmsxXQ-7lU32Wlp1UlKSMaspui5Iwy7eC4J7QkqoJ25D9JAcg8RbSNmlOBb7D1wMdD8D5N3gT-J1SSP4BB8jWQ-gOakyHSNM3eg_SKaPIT8kNg21s-B2-aZruVDw58b4CXBNRDD5INQHf1_Tfh904wO2SUDs3V1irXB40ANv1oqTp2mB20_L5JTms9Y5ye9fyB9Xw_gBesd6PBeMsD7DNj98brdbm1xRsMMXteBSO5VUZoxUTF6C9B1OMzs70w9BvrjD1MchfSO-hVTY8rTNfTx7IhBg-IwYRSVOmsEQ2CpBwWLHeC2S_BpLhThOlDZEyVIo-3JVCLcGY5Nl9tp34s4bhw2S_6DQY5bO-t6C8cU4aZXkwFfeogwBl5IabmUl0TuroRd3XJwQlmfs03LH14HjsUHp2Hwd1jCRtWt463WND12vebC86qwz6ntXoigXC7GzHUv2Kk8dDrt2twLTTTjwbU8Tp0xjZaWFfdytAtU2dTvsmU7w_optvBE06KNCMOngwzycuSukuWHqwzu-8LlHOsnCpWzo-EL8XN2c3_0o-Eky0b7aqwt2wMh8vGKJi8IdqpLArZfr8RGVNAjb8d4sL4Ysc1b3Vh91A54RW0DvKxy_pbTTQUIJ541wmU_wi_Op0TRMGk5wTjgROQcUzf4ATPJJ2ZMYSq6Zs25P1cd1SieE6F41LGXilfnWFDYI_haMBwmsDh87m9XEztDxQHjyBNhmc5a375-UGU_ozzOQunh3dw7AwJiZP9Bxl27_viQcYTWB9_oPF0io_PgAfI-WoubBjrURoPKc3Slw4NXzL5zeY36p5hPjlNPa_EcYnqGTlfPVUZGns8J8OHkRdFxx5keX_SQdazS4z9RJlVw3uWwp_hOu_Hey2yJ5CP3MKc7fpqu37F_cwxR1xnql8fQuco-pQoOj9Gvi5R5wD4-zxGTrhf9qKouwjF3nARGobh-UTkgJSvvs0wBPYY9v9eJyIYn09E_mInIrj_ygf2PYjCt7lw2_HEGtULKbt95fxOAezAj0qi9Mh73StHOByA8MM8Okkctrr-EuwzIrAB0qNrPECKifd6ul4gYlu1MJNCw3qvA-8xxqu9_ZbKEk5sMGOPnsH6h9Y4SmHsH9Zy4J2gcqkKq-_J1LZa9dSe9F-Sp9jzxn21c2VYEm3unbdX0_ZXJ9OmarEBY198rk4JotWxB6J32hqkkMdjcgjETGbwB4guhhSWTNzaGo0549B2nRJHo2YPRzIgww_9o8kYABmG4tAQDZobUWkiKOwLrv1T3oiy1maC06en1hBdSw0rVFIv8yeHGR8AbRYSa6C13pH9elOfFK5F04M7KGWhk3CcHYLbAtuhfpCb_dxx7jA9JasGRQ9mb9mHPexRL0Y59RcFMRI61UX2rdefYFaAdEW2W69pu67rt50KQqthD0JvmePnHmQQIqP-aVRoZ-ipMKj8wUmWHFmuZIf0ZA4rfhIIPbRYmGGLShOlFx2Mr54Fwv4sUZ9_P08jQI38UzFo59gqsesNprt6zdruN5CWqI0rRGVREBs1aJpKpSEz-lGpwJY6dnYz-yXaVrQJvo24TS1oVtvJdrVadQXIfbBtAIh1onk4C3oAVTEpkJ-MvJG3ZNZwx1V5jsyoOPZz7EEyjiH20izwwijI6XiS4SyAOPFTmsZkPNktJu5sTaQB91ypZXufLXFDtszS3F3Kiq2bLpt2OIfsiqmPKQftF-deZJdBlgQJuYBLf-JHXoC9AF-sLpMgA5KOcRIEPp2EYe5N0jjAWUZpFlKaXLDLjWDfD4IwGgU5hJT4E5yFWRRg3wk9KAjjI6PQSKrlhS2UvUxwFE4uOEmBV7beG-O2dhc746sLdWkNn9bLygk9zipd7SRoprktEp_bEeMr9CcXFF_Uil--vWLY2uJ_AQAA___9ecyH">