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

    <tr>
        <th>Summary</th>
        <td>
            [Flang][OpenMP] fatal internal error: CHECK(context.location().has_value()) failed at /root/llvm-project/flang/lib/Semantics/expression.cpp(4640)
        </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/eP4TE7znf

With the flang-new I built today, the failure point is `flang/lib/Semantics/expression.cpp(4641)`.

Reproducer:
```console
$ cat test.f90
!$omp declare reduction(a:integer:omp_out=omp_out+omp_in)
end
```

Stack dump from Godbolt:
```console
fatal internal error: CHECK(context.location().has_value()) failed at /root/llvm-project/flang/lib/Semantics/expression.cpp(4640)
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-20240418/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 -fopenmp -resource-dir /opt/compiler-explorer/clang-llvmflang-trunk-20240418/lib/clang/19 -mframe-pointer=all -o /app/output.s -x f95-cpp-input /app/example.f90
 #0 0x00000000036a9c18 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x36a9c18)
 #1 0x00000000036a758c SignalHandler(int) Signals.cpp:0:0
 #2 0x000077d9b4642520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x000077d9b46969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #4 0x000077d9b4642476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #5 0x000077d9b46287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #6 0x0000000004b1fc69 (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x4b1fc69)
 #7 0x0000000003f1ff96 (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3f1ff96)
 #8 0x0000000003f7c2d0 Fortran::semantics::ScopeHandler::MakeNumericType(Fortran::common::TypeCategory, std::optional<Fortran::parser::KindSelector> const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3f7c2d0)
 #9 0x0000000003fa3a44 std::enable_if<WrapperTrait<Fortran::parser::IntegerTypeSpec>, void>::type Fortran::parser::Walk<Fortran::parser::IntegerTypeSpec, Fortran::semantics::ResolveNamesVisitor>(Fortran::parser::IntegerTypeSpec const&, Fortran::semantics::ResolveNamesVisitor&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fa3a44)
#10 0x0000000003fa3e1c void Fortran::common::log2visit::Log2VisitHelper<0ul, 6ul, void, void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::IntegerTypeSpec, Fortran::parser::IntrinsicTypeSpec::Real, Fortran::parser::IntrinsicTypeSpec::DoublePrecision, Fortran::parser::IntrinsicTypeSpec::Complex, Fortran::parser::IntrinsicTypeSpec::Character, Fortran::parser::IntrinsicTypeSpec::Logical, Fortran::parser::IntrinsicTypeSpec::DoubleComplex>(std::variant<Fortran::parser::IntegerTypeSpec, Fortran::parser::IntrinsicTypeSpec::Real, Fortran::parser::IntrinsicTypeSpec::DoublePrecision, Fortran::parser::IntrinsicTypeSpec::Complex, Fortran::parser::IntrinsicTypeSpec::Character, Fortran::parser::IntrinsicTypeSpec::Logical, Fortran::parser::IntrinsicTypeSpec::DoubleComplex> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&), std::variant<Fortran::parser::IntegerTypeSpec, Fortran::parser::IntrinsicTypeSpec::Real, Fortran::parser::IntrinsicTypeSpec::DoublePrecision, Fortran::parser::IntrinsicTypeSpec::Complex, Fortran::parser::IntrinsicTypeSpec::Character, Fortran::parser::IntrinsicTypeSpec::Logical, Fortran::parser::IntrinsicTypeSpec::DoubleComplex> const&>(void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::IntegerTypeSpec, Fortran::parser::IntrinsicTypeSpec::Real, Fortran::parser::IntrinsicTypeSpec::DoublePrecision, Fortran::parser::IntrinsicTypeSpec::Complex, Fortran::parser::IntrinsicTypeSpec::Character, Fortran::parser::IntrinsicTypeSpec::Logical, Fortran::parser::IntrinsicTypeSpec::DoubleComplex>(std::variant<Fortran::parser::IntegerTypeSpec, Fortran::parser::IntrinsicTypeSpec::Real, Fortran::parser::IntrinsicTypeSpec::DoublePrecision, Fortran::parser::IntrinsicTypeSpec::Complex, Fortran::parser::IntrinsicTypeSpec::Character, Fortran::parser::IntrinsicTypeSpec::Logical, Fortran::parser::IntrinsicTypeSpec::DoubleComplex> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&)&&, unsigned long, std::variant<Fortran::parser::IntegerTypeSpec, Fortran::parser::IntrinsicTypeSpec::Real, Fortran::parser::IntrinsicTypeSpec::DoublePrecision, Fortran::parser::IntrinsicTypeSpec::Complex, Fortran::parser::IntrinsicTypeSpec::Character, Fortran::parser::IntrinsicTypeSpec::Logical, Fortran::parser::IntrinsicTypeSpec::DoubleComplex> const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fa3e1c)
#11 0x0000000003fa425f void Fortran::common::log2visit::Log2VisitHelper<0ul, 6ul, void, void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::IntrinsicTypeSpec, Fortran::parser::DeclarationTypeSpec::Type, Fortran::parser::DeclarationTypeSpec::Class, Fortran::parser::DeclarationTypeSpec::ClassStar, Fortran::parser::DeclarationTypeSpec::TypeStar, Fortran::parser::DeclarationTypeSpec::Record, Fortran::parser::VectorTypeSpec>(std::variant<Fortran::parser::IntrinsicTypeSpec, Fortran::parser::DeclarationTypeSpec::Type, Fortran::parser::DeclarationTypeSpec::Class, Fortran::parser::DeclarationTypeSpec::ClassStar, Fortran::parser::DeclarationTypeSpec::TypeStar, Fortran::parser::DeclarationTypeSpec::Record, Fortran::parser::VectorTypeSpec> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&), std::variant<Fortran::parser::IntrinsicTypeSpec, Fortran::parser::DeclarationTypeSpec::Type, Fortran::parser::DeclarationTypeSpec::Class, Fortran::parser::DeclarationTypeSpec::ClassStar, Fortran::parser::DeclarationTypeSpec::TypeStar, Fortran::parser::DeclarationTypeSpec::Record, Fortran::parser::VectorTypeSpec> const&>(void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::IntrinsicTypeSpec, Fortran::parser::DeclarationTypeSpec::Type, Fortran::parser::DeclarationTypeSpec::Class, Fortran::parser::DeclarationTypeSpec::ClassStar, Fortran::parser::DeclarationTypeSpec::TypeStar, Fortran::parser::DeclarationTypeSpec::Record, Fortran::parser::VectorTypeSpec>(std::variant<Fortran::parser::IntrinsicTypeSpec, Fortran::parser::DeclarationTypeSpec::Type, Fortran::parser::DeclarationTypeSpec::Class, Fortran::parser::DeclarationTypeSpec::ClassStar, Fortran::parser::DeclarationTypeSpec::TypeStar, Fortran::parser::DeclarationTypeSpec::Record, Fortran::parser::VectorTypeSpec> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&)&&, unsigned long, std::variant<Fortran::parser::IntrinsicTypeSpec, Fortran::parser::DeclarationTypeSpec::Type, Fortran::parser::DeclarationTypeSpec::Class, Fortran::parser::DeclarationTypeSpec::ClassStar, Fortran::parser::DeclarationTypeSpec::TypeStar, Fortran::parser::DeclarationTypeSpec::Record, Fortran::parser::VectorTypeSpec> const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fa425f)
#12 0x0000000003fb0397 void Fortran::parser::ForEachInTuple<1ul, void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::Verbatim, Fortran::parser::OmpReductionOperator, std::__cxx11::list<Fortran::parser::DeclarationTypeSpec, std::allocator<Fortran::parser::DeclarationTypeSpec>>, Fortran::parser::OmpReductionCombiner, std::optional<Fortran::parser::OmpReductionInitializerClause>>(std::tuple<Fortran::parser::Verbatim, Fortran::parser::OmpReductionOperator, std::__cxx11::list<Fortran::parser::DeclarationTypeSpec, std::allocator<Fortran::parser::DeclarationTypeSpec>>, Fortran::parser::OmpReductionCombiner, std::optional<Fortran::parser::OmpReductionInitializerClause>> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&), std::tuple<Fortran::parser::Verbatim, Fortran::parser::OmpReductionOperator, std::__cxx11::list<Fortran::parser::DeclarationTypeSpec, std::allocator<Fortran::parser::DeclarationTypeSpec>>, Fortran::parser::OmpReductionCombiner, std::optional<Fortran::parser::OmpReductionInitializerClause>>>(std::tuple<Fortran::parser::Verbatim, Fortran::parser::OmpReductionOperator, std::__cxx11::list<Fortran::parser::DeclarationTypeSpec, std::allocator<Fortran::parser::DeclarationTypeSpec>>, Fortran::parser::OmpReductionCombiner, std::optional<Fortran::parser::OmpReductionInitializerClause>> const&, void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::Verbatim, Fortran::parser::OmpReductionOperator, std::__cxx11::list<Fortran::parser::DeclarationTypeSpec, std::allocator<Fortran::parser::DeclarationTypeSpec>>, Fortran::parser::OmpReductionCombiner, std::optional<Fortran::parser::OmpReductionInitializerClause>>(std::tuple<Fortran::parser::Verbatim, Fortran::parser::OmpReductionOperator, std::__cxx11::list<Fortran::parser::DeclarationTypeSpec, std::allocator<Fortran::parser::DeclarationTypeSpec>>, Fortran::parser::OmpReductionCombiner, std::optional<Fortran::parser::OmpReductionInitializerClause>> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&)) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fb0397)
#13 0x0000000003fbc497 Fortran::semantics::ResolveNamesVisitor::Pre(Fortran::parser::SpecificationPart const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fbc497)
#14 0x0000000003fba599 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-20240418/bin/flang-new+0x3fba599)
#15 0x0000000003fe1434 Fortran::semantics::ResolveNamesVisitor::ResolveSpecificationParts(Fortran::semantics::ProgramTree&) (.part.0) resolve-names.cpp:0:0
#16 0x0000000003fe1ab6 Fortran::semantics::ResolveNamesVisitor::Pre(Fortran::parser::ProgramUnit const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fe1ab6)
#17 0x0000000003fe2fb4 Fortran::semantics::ResolveNames(Fortran::semantics::SemanticsContext&, Fortran::parser::Program const&, Fortran::semantics::Scope&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fe2fb4)
#18 0x000000000403ac21 Fortran::semantics::Semantics::Perform() (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x403ac21)
#19 0x00000000036ee4e7 Fortran::frontend::FrontendAction::runSemanticChecks() (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x36ee4e7)
#20 0x0000000003a18c70 Fortran::frontend::CodeGenAction::beginSourceFileAction() (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3a18c70)
#21 0x00000000036edac5 Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x36edac5)
#22 0x00000000036dd407 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x36dd407)
#23 0x00000000036f3d4d Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x36f3d4d)
#24 0x0000000001e7cfc8 fc1_main(llvm::ArrayRef<char const*>, char const*) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x1e7cfc8)
#25 0x0000000001d6c7dd main (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x1d6c7dd)
#26 0x000077d9b4629d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#27 0x000077d9b4629e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#28 0x0000000001e7bf2e _start (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x1e7bf2e)
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 823eb1a3252dd773f9c4d92093591f1b39ac27d4)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW1tzo7gS_jXkRYULBAbzkAePE-9O7S01ydl9dAnR2DoREiWJjLO__pQEvkAyzjgzzmT3eGpmggB199dfty5ETbRmSwFw6Y0_eOOrC9KYlVSX9z5RSn7WF7ksHi8_Qa1k0VCWc0BSoJ9kkUtuvGjqBVdeMF0ZU2vbwnMPz5ft05FUSw_P__bwHG7iu-v0b1G2r7f__8XMCpkVoJITsfQFfEYfUd4wbpCRBXn08Kx9TBhvFKBaMmEQ08hLAtfFw3POcg_Pb6EiwjCqrap1rUBrJsWI1rWHJ3EShx7OvCQY7WvfQAK1ReElQfuXSqElh-4ujhElBhnQZlRmweZu6OFYVjUqgHKiACkoGmqYFB6eEC-aMmFg6aTLql7IxnjR1eYKf7BXTFi7nDgQxcCGfVtvDaH3qGiqGpVKVk_c_7zhJTGEI2uGEoQjUEpaa9Ds5-vZLx6eUCkMrM2IS0o6uz2cjVZELx4Ib6BtezhzDECBiEEenispjfU8f6j8Wsn_ArXN4wgJtsBvfr2e3l4j3eQVM4igvFkiBbVUNgjQIK6YWTX5iMqq0__UDKZ1A1YrIqJATFDeFOCiiCqiVygn9N4oQmE09OzWmTZMshsll4pUiKhlU4Ew1ggLXtZWC5VVzTgoH9Y1lwqUveeC2JrThrNRjbj3cYDjIA4nHp7nlu75Ltb9kobIN4rVHNB6kiyS2G_EvZCfhc-ZaNb-UjTIv0V-pWDDkV_JAjiqGUV-zajP4QE4wm2Dab9mgHxD1BKMT-vGyvWTGPmVNQz5tkl05etHYcjai65sdHDkl7IGUdXIV6Bloyj4BVPfiLeNBNrFRZghvyoVqcB3eWwT44pwjnxp9RAbGXPZmLoxI438NSqzsU_r2meibszuFViTquawS0Tk4ShAwTrY_IkSktFwglyARFMvmupH3V7cKCaMo_zOxoCHJ7uXFPm8kNooIJWHEzv2MGFs8Ls0-I7Ee_hDsO6M3KaBRREOUKTjCUW3bCkI_5mIglttk86o9rZ2GRVNA_dvKwh3gtK0yPI4ifEYBx2MlpQu2rZR1j6gIy1HiTPPdekZF_VlZklWUlSblQJSLO4Z58cpcP17CuKh0XGaoKV2OI81Pk6TnuxxXzaepGWESG4HmaMku449yck-Z3EeljQ5UcR0wnva017ElGFZZsmJ4rUV3tM-6WtPKS4CNJfKKCK6xNtOA655S2UNm1B2d34j9_B7U4Fi9O6xtgnZ609lVcnu2j6fEQNLqdzKQJuifSBrOzAS7kWzXueaKL3R8wsTxS1woMZOgdfIzpPGpfmp8rt1R89fWd9fJCJxvIMBguQcFqz0otlfitQ1qDtFmDkE62O7xLCuua2BetG19cyDZIW9dK-YxxrQFwX8Rfj9MQrw7CDBn0BL_gC_kwr0n0yz1ttDVg8o2CPmeE0npdOxtaXTjtbBkE4IqfM9-mIMc7nED9batvmrXGJn_M_Aa-uRWdBwizxpfzgiu5_Hcfg13pp9WeRLtA_eVUzoNoHbKGxVEv6afleyyTncKKBMuzXp8SJm0q4Q1q_quiKKULs4eUXnX-WS0W9BvTHcpcx2YHggihFx1Dhw5uuN-fr2cat97OGUkyoviIfT4bD5sqT9aa03RZ5D6J8UQi79z2P-_1sAnMf8fxZf73HMTzpzGuE-6haIS7E8TwX_3Mg64X4GQtrbz4SD_UyMx-W_Zz8z8Puht6_cB333ubXPU_uJ4jU9Z5xo_Q1dbw05jPCgza_v_QmoVMXBvn-6jyq9TxDHzmNnbt6Km_c4Zx09OZ3D5e3D5YftSc5kn8ftMzfvcdz-XnuNcxT9gCg63b7Cbht6-wrc31fkQZSlL2wB5lJdE7r6KO6amoMXzcLdBuJNJ6A_QeXEsOrgS39U9afN2Z8_alCkk7rNg8WCrtdh2DY40wcz4jnG94UR7s6CSHWskOi6-_3gVwGZySpnAtTRv2rdF_JRMMMIZ3-DmnHSaNgYsZtpTMfwmYI3peA9Tih7KM9R8WMS85yb74CFXm6ep7x_BafntPrhFLzHKe9ky3C3yu4tw6PBMpzGWXr8Ya6pO0X75KDePhWWdlay9rzyDVHmLbYdDk4PbzzAS8ZZ9vxpO7fJePGs3RNY3_-03VMV3_283SFy3tmJO8dYj9Jxn1II4yh-XQh3D554Q7-Q0F1ZwJ0C2IEf1USZUWBbqpXrC6vx6eFsCyIZgiB5cpI87Gz9j2BvkoEOSI-uwelkwGX-9XS9QMS2wGTWFrE8F8DPOOOro90dVT6xw6w_eg7rHaiOg4hQHB62chCdoEqpqrZu50Sn0Furemb3zzUnADEMZpZSWZZEN_bOu9a0rZZy91QjNmBmK6D3-pQgOhv3QeD-aV4STmgaHAIxkwX8BGIfQw5LJm5d-cyccZjSXVHViXC0ZvZwDIpIoCB0fCwZAyDDVBw6okXzUWhDBIXnkut5lR9F3Rir4A2Gp9YRPU_1v0smRREHB8P2CdB2IbEG2pgd2V_v6pPCdWh6cPvrv6SMirg4BLcDtkP9sCsTPCocpieE6VD0YPaWfSGktKQTVNJwURErYa_ga6oUefwEdgVIV2S7MJ9267r-vVNB6CzsQegtc8IioWlRIGv-iUxoNfRMSAYFU1mRHVlB5rr0ZKZDmRAHaLGw3RbaEGUWexi_WgvEfS2TAf95iQG18k_GoNWxNWL3NJruam4bt99ARqIurxCVVUVc1qBpLpWBArmaXAWuHBWKFyS6u2iTfBtxm1LdonHKduVzjQbkP7h7AIjtZfNQC3oApZkUKMxGwShYMue44ypxR7bXBEeQhyTCY1wUaRqVGY2LDAdZNM7CMsyjjFCcFrs10J2rW7XgvlQO273nqg6RK4W1b9dSs3X7yA07nENxxdT3KdntF1hfFJdRkUUZuYDLMA1jHI6DaHKxuowmaRAk4zhLMaRBGuUhycc4iibRJMNFRC_YZSsYp2Fg-4zCuMijMS4gTfOUhhMvDqAijI-sQSOplheumPkyC6IoveAkB65dkT7GXbE19sZXF-rSOT5vltqLA8600TsJhhnuKvvnrsf4yht_-KMG8duNN75C77xA_KJR_PL1FeDOb_8LAAD__wL_wn4">