<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/88112>88112</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Flang] fatal internal error: CHECK(ss.Rank() <= 1) failed at /root/llvm-project/flang/lib/Evaluate/fold-implementation.h(204)
</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/47GhYzYx4
Reproducer:
```console
$ cat test.f90
real,parameter,dimension(3) :: x = 1.0
integer,parameter,dimension(3,1) :: y = 2
real,parameter,dimension(3) :: z = x(y)
end
```
Stack dump:
```console
fatal internal error: CHECK(ss.Rank() <= 1) failed at /root/llvm-project/flang/lib/Evaluate/fold-implementation.h(204)
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-20240409/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 -mframe-pointer=all -o /app/output.s -x f95-cpp-input /app/example.f90
#0 0x00000000036aab18 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x36aab18)
#1 0x00000000036a848c SignalHandler(int) Signals.cpp:0:0
#2 0x00007ff413442520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#3 0x00007ff4134969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#4 0x00007ff413442476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#5 0x00007ff4134287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#6 0x0000000004b22439 (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x4b22439)
#7 0x00000000045e389c Fortran::evaluate::Folder<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>::ApplySubscripts(Fortran::evaluate::Constant<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>> const&, std::vector<Fortran::evaluate::Constant<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 8>>, std::allocator<Fortran::evaluate::Constant<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 8>>>> const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x45e389c)
#8 0x0000000004688fdb Fortran::evaluate::Folder<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>::Folding(Fortran::evaluate::ArrayRef&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x4688fdb)
#9 0x000000000468924d Fortran::evaluate::Folder<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>::Folding(Fortran::evaluate::Designator<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>&&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x468924d)
#10 0x0000000004681a5b Fortran::evaluate::ExpressionBase<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>::Rewrite(Fortran::evaluate::FoldingContext&, Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>&&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x4681a5b)
#11 0x000000000465e078 Fortran::evaluate::ExpressionBase<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)1>>::Rewrite(Fortran::evaluate::FoldingContext&, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)1>>&&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x465e078)
#12 0x000000000434c210 Fortran::evaluate::ExpressionBase<Fortran::evaluate::SomeType>::Rewrite(Fortran::evaluate::FoldingContext&, Fortran::evaluate::Expr<Fortran::evaluate::SomeType>&&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x434c210)
#13 0x0000000003f19cab 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-20240409/bin/flang-new+0x3f19cab)
#14 0x0000000003f1a9ff Fortran::evaluate::ExpressionAnalyzer::IterativelyAnalyzeSubexpressions(Fortran::parser::Expr const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x3f1a9ff)
#15 0x0000000003f1ad95 Fortran::evaluate::ExpressionAnalyzer::Analyze(Fortran::parser::Expr const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x3f1ad95)
#16 0x0000000003e80fd4 std::optional<Fortran::evaluate::Expr<Fortran::evaluate::SomeType>> Fortran::evaluate::ExpressionAnalyzer::Analyze<Fortran::common::Indirection<Fortran::parser::Expr, false>>(Fortran::parser::Constant<Fortran::common::Indirection<Fortran::parser::Expr, false>> const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x3e80fd4)
#17 0x0000000003f96db3 std::optional<Fortran::evaluate::Expr<Fortran::evaluate::SomeType>> Fortran::semantics::AnalyzeExpr<Fortran::parser::Constant<Fortran::common::Indirection<Fortran::parser::Expr, false>>>(Fortran::semantics::SemanticsContext&, Fortran::parser::Constant<Fortran::common::Indirection<Fortran::parser::Expr, false>> const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x3f96db3)
#18 0x0000000003f97032 Fortran::semantics::DeclarationVisitor::NonPointerInitialization(Fortran::parser::Name const&, Fortran::parser::Constant<Fortran::common::Indirection<Fortran::parser::Expr, false>> const&) (.part.0) resolve-names.cpp:0:0
#19 0x0000000003fb2826 Fortran::semantics::DeclarationVisitor::Initialization(Fortran::parser::Name const&, Fortran::parser::Initialization const&, bool) (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x3fb2826)
#20 0x0000000003fb4793 Fortran::semantics::DeclarationVisitor::Post(Fortran::parser::EntityDecl const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x3fb4793)
#21 0x0000000003fb4992 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-20240409/bin/flang-new+0x3fb4992)
#22 0x0000000003fb4d17 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-20240409/bin/flang-new+0x3fb4d17)
#23 0x0000000003fbecac 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-20240409/bin/flang-new+0x3fbecac)
#24 0x0000000003fbd9bd Fortran::semantics::ResolveNamesVisitor::Pre(Fortran::parser::SpecificationPart const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x3fbd9bd)
#25 0x0000000003fbe1a9 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-20240409/bin/flang-new+0x3fbe1a9)
#26 0x0000000003fe3104 Fortran::semantics::ResolveNamesVisitor::ResolveSpecificationParts(Fortran::semantics::ProgramTree&) (.part.0) resolve-names.cpp:0:0
#27 0x0000000003fe3786 Fortran::semantics::ResolveNamesVisitor::Pre(Fortran::parser::ProgramUnit const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x3fe3786)
#28 0x0000000003fe4c84 Fortran::semantics::ResolveNames(Fortran::semantics::SemanticsContext&, Fortran::parser::Program const&, Fortran::semantics::Scope&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x3fe4c84)
#29 0x000000000403c8f1 Fortran::semantics::Semantics::Perform() (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x403c8f1)
#30 0x00000000036eef67 Fortran::frontend::FrontendAction::runSemanticChecks() (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x36eef67)
#31 0x0000000003a192e0 Fortran::frontend::CodeGenAction::beginSourceFileAction() (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x3a192e0)
#32 0x00000000036ee545 Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x36ee545)
#33 0x00000000036de2f7 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x36de2f7)
#34 0x00000000036f47cd Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x36f47cd)
#35 0x0000000001e82878 fc1_main(llvm::ArrayRef<char const*>, char const*) (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x1e82878)
#36 0x0000000001d7366d main (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x1d7366d)
#37 0x00007ff413429d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#38 0x00007ff413429e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#39 0x0000000001e817de _start (/opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin/flang-new+0x1e817de)
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 1c4ec8def6bb18934f300f6e630e92e7efdb60be)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/compiler-explorer/clang-llvmflang-trunk-20240409/bin
```
Gfortran properly rejects this program.
```console
$ gfortran test.f90
test.f90:3:37:
3 | real,parameter,dimension(3) :: z = x(y)
| 1
Error: Array index at (1) is an array of rank 2
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW11vozq3_jX0xiICQ_i46EUmbeYdvUfvGU3n7KN9VRmzSHxqbGRMJ51ff2RDPkzbtMk03d1bE7VVAXt5red5ljEOi7QtWwqAS2_6yZteXZBOr6S6vPOJUvJHe1HI8uHyGzRKlh1lBQckBfosy0Jy7UUzL7jygtlK66Y1R3jh4cWyvzqRaunhxU8PL-L08-rPn3-u4755_3djFNTWjpcE_Q-VopUchrM4RpRopKHVkyoP-rMKCPfwvCGK1KBBeXheshpEy6TwcBZ5OEfGcDRDa-RFVyicDD2Z0LC0HQ50nod7Bh6sAXz0wD9tv7WHswcP5313EOUo2H1QbjShd6js6uYFUCqiCUcmFCUIR6CUNDii-b-u5__2cNa2k29E3Hk46_2ZWwjM_xVhHEpENPLwQkmpPbzg_L72GyX_D6g5rDgRhjvOCg8vru8J74gGc0Hy0md1w6EGoYlmUkxWHs5wEG8D_Ppf17Oba9R2Rc00IqjolkhBI5VGWqKRVJhedcWEynpw4rEvrG07aD28QESUiAnKuxKQXgGiirQrVBB6pxWhMHkWwWDiBflXJZeK1IioZWecN04YBGRjRqGybhgH5cO64VIZVhfUoOAbdywevladuPNxgOMgDnIPLwomNmD5An4gv6Ih8rViDQe0zpLbJPY7cSfkD-FzJrq1vxQd8m-QXyvgklr8_FqWwFHDKPIbRn0O98AR7g9Y6zcMkK-JWoL2adMZu34SI782jiHfHJK29tsHocnai66MJDjy68rI02-klYgXXRHOkS9NxKRpTNydbjo9aZG_RlU-9WnT-Ew0nd41gTUxVO9yDnk4ClCwDjafKCGkCDNkqbOabx_a_p-vigltyfhu2PFwtmukyI9b2WoFpPZw4uG5EbLVqZHrG1Li4U_BenByK1ATRTiKIoszim7YUhD-LyJKbkbLBqf60-2ENkZSgf3dGsKDobSq4jCKYzzFwRBGnz2DDrb89xfopJWTxLpnuzjORa7NPMkrihq9UkDK2zvG-XED2P7OAPHY6ThN0LK1cR7rfJwmju2paxtnaRUhUpj0P8qy7ehYTvY5iwuM4-hMihmMO6OnzuhTiLKcooVUWhHRqxo286Q9WkhemsSbH2jz_aEBMzXjzGlEZV1LsWsyJxqWUpl7SGiSJfaia_tjGsyahj_cdEVLFWt0O7blDjiXotVE6HO6hcx9Sg953eqy73APVMsX4DiXd4HxJBtA23eKcDsLfwi_xtidS9q9ch1pZ460kyyryuIjSNuMw8xC5JCkZ0qRh29QnRW0HhMHtHwEWo7j8m8D2hXYyf5F5f-iQ4aSs7JiQN-yYm7rwYiVkEwPSvl63ShozdL9E2nh_Ox8gx-KmaX0IXYGCudSaFhvZtIXgvh782hocngMXR6nEKTZW_F4I2v4NxPlsYD89TT-mufnZtGS5LCIHRajmOIweEsWe1n_9Zxs_Dgzwj2ADsKR8xxThTklxW59IxvzhEn44QiOizG6fh2DM0H4w89-c6c__9_qD6IYKfgjZhui2v2WFsvsYBNnlflsy_mKqE9c0rvzPVz2mDukxCNSSF5Vp4D2RYMimt0Dfxgu3HQFbBs_WusfwOh80ZvgnOin4-jLfHpK9MPRxwiyzKdOkM6zaARZUJXxR8y7DYijYfbvFl9EyRRQ4_GLeYnnqCK8hc0d5XlqnntmepuR34H0nlOH9NRVdp6URfS-pLdQE6EZbR12n7L5flw8IYSRmzebwwO33X-UdnppONrJRtpJgwgf5PYKKCfKbhH_wVpmH9XM-f9I8bXf1P0imGaEs5-20aFk_A-p4ZU3zHeFftIQpSdmRYMUtJLfgy9IDU9stRoIcxfCAmc4OQnCcwDn2nT6FFLyM2rN4rCvNRyMgIrTPDoJqK_SBHHg_is00w-m93sklY3DCTQcB5rnGN1LVj7P00Kqa0JXX8T3rrEL0bDjhqTDvf6X8Lux1kcYfusFbBTTbkA8JJg9zM1sf9MAdfYmb2_peh2G_QFn7aOU3Dc201o9svDs7uaTPR_vjh7lwU4Kx_uw13fvjrK1oQemfkN5EpTPz1-vUbCdWexlD6ec1EVJPJy-cMN_wtL-BOGE9ZvdX0uU37lyrlz5fUv4UNz8lvk_-pZwxmVjnmNn2YjHy8YyTE_I9hOeiYwW96R5o2vtPCKdQMfhbZgbTbR9V-sdnH8LXZ1PBGWYOiIY7ZwXQAk9QQTPTDr2OVp1VJ9M6WkTxXMuHDdlPGnlozNsCHQYHm3DF2VelMdzMbPvsh3chjYzPKtY_z7fV6L0uzwNm3CceKdjRYck3xEPghQcblnlRXP77PtdEXZQS4_CGmYokyTbb930QwOnZ8zjId5-BjxAzoeTcEhyh1L3a4YKojCIT5PwcOERGo--RBoZHF6b_a4ATty3w-k4iDQ7vG93ah4Ovv6PYO-SgTYQh67RJi_ENHs9XW-8ib553_m1ar-hsoEzA2bwcABzX6IKIppV4WEvR-oEVUlVb95yP8u37r1X-26P34EGqJLUdbtShiUxzL2L4Wg2rLHMOdWJTTDzFdC79pxBDD46QbibpyTMMQSHgpjLEj6D2I-hgCUTN7JTFBaMw3DpnHH0bjpx4DEZ03h6LBmjQMapOAaij-aL_aqEwlPJ9fSQX0TTaTPAO0xPPRAOUu6SNykBVwdl-yjQfiGxBtrpHdmvh_qs4dponHDd9V9SxSktD4U7BLaL-n4o0ThWDrMzhmmjcMJ0ln0hZDhLM1TR8LYmxsJe2cX2VdloTldk-_w9G9Z17rlzhTB46ITgLHPCMo2SpETG_TO50I_guJCOyhbyMj-yjsN2cWxmY5sQB-j21nS7bTVR-nYvxlePArE7Sj7iP0xLQL39szFoxtg6sbsazXaFaJ193kBaoiGvEJV1TWzWoFkhlYbS-EelAluuBeULFu1ZtEm-jblNPVvZ2cF2RSxdC8i_t-cAENvL5vEo6B5Uy6RAYT4JJsGSWeCOq1SbmF4hjYFmJVRJUYRZHsVVFARVAkkUQI4hhaoskqDYQffd1nXZGsVnysWGdrb2B9lSMdO6kS1b95fstMM5lFdMvU1J2_PViZ-rfhpEjZINKP6AFJjgW6RXrDVnzZJz8lIx53Jjxq3o3B5Fs8j8pt62BLJ_6x4hFCEvnaNfLMFE9mMMveYT9p2uNzK0syhiooR1X0SZ2bJK1iIiELEXZYUUEXebitEtEhflZVTmUU4u4DJMQ5wkOA3xxeoyjvKiqMppCNOoqMh0GkdBkFFICORBmaYX7HJDUhhGWYQnNKjCDBJK4yINi5B4cQA1YXxiyJ1ItbywhZOXWRaG-IKTAnhra3wxHqo7sTe9ulCXVsRFt2y9OOCs1e3Ogmaa28Lghe0xvUIfser0olP88vSyUgvQ_wcAAP__yQHkLQ">