Skip to content

[Flang] Out-of-memroy occurs on high-rank arrays #124488

@ohno-fj

Description

@ohno-fj
Version of flang : 20.0.0(f5a35a31bfe6cbc16bec0c130f2bb3632dbf1fbf)/AArch64

The attached program is incorrect.
The maximum number of dimensions of an array is 15, but if three 31-dimensional arrays are used, a compilation terminates abnormally in my environment (Allocation failed).
31-dimensional arrays are not available, but appear to allocate. It should not be allocated.
When the number of 31-dimensional array is changed from 3 to 1 (delete definition statement), a compilation error occurs. This is correct behavior.

The following are the test program, Flang, Gfortran and ifx compilation/execution result.

UT_BESSEL_JN_010.f90:

PROGRAM test
  integer,parameter :: n(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2) =2
  real,parameter :: x(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2) =2
  real,parameter ::rslt(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2) = BESSEL_JN(n,x) !!!!  Rank > 30
  print*,rslt
END PROGRAM
$ flang UT_BESSEL_JN_010.f90
$ rm -f *.o *.out fort.* *.mod; flang UT_BESSEL_JN_010.f90
LLVM ERROR: out of memory
Allocation failed
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang -fc1 -triple aarch64-unknown-linux-gnu -emit-obj -mrelocation-model pic -pic-level 2 -pic-is-pie -target-cpu generic -target-feature +outline-atomics -target-feature +v8a -target-feature +fp-armv8 -target-feature
 +neon -resource-dir /work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/lib/clang/20 -mframe-pointer=non-leaf -o /tmp/UT_BESSEL_JN_010-d61bc9.o -x f95-cpp-input UT_BESSEL_JN_010.f90
 #0 0x000040001e4b25a8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/work/groups/ssoft/compiler/llvm/aarch64/main-latest/lib/libLLVM.so.20.0git+0x5a025a8)
 #1 0x000040001e4b0630 llvm::sys::RunSignalHandlers() (/work/groups/ssoft/compiler/llvm/aarch64/main-latest/lib/libLLVM.so.20.0git+0x5a00630)
 #2 0x000040001e4b0788 SignalHandler(int) Signals.cpp:0:0
 #3 0x000040000e5d07a0 (linux-vdso.so.1+0x7a0)
 #4 0x0000400023346274 raise (/lib64/libc.so.6+0x36274)
 #5 0x0000400023330a2c abort (/lib64/libc.so.6+0x20a2c)
 #6 0x000040001e3de838 out_of_memory_new_handler() ErrorHandling.cpp:0:0
 #7 0x000040001e3de850 LLVMInstallFatalErrorHandler (/work/groups/ssoft/compiler/llvm/aarch64/main-latest/lib/libLLVM.so.20.0git+0x592e850)
 #8 0x00004000230e14f0 operator new(unsigned long) (/lib64/libstdc++.so.6+0x914f0)
 #9 0x0000000004d72d28 void std::__detail::__variant::__erased_ctor<Fortran::evaluate::Constant<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>&, Fortran::evaluate::Constant<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>> const&>(void*, void*) (/work/groups/ssoft/compiler/llvm/aarch64/mai
n-20250120-69d3ba3db922/bin/flang+0x4d72d28)
#10 0x0000000004d38528 void std::__detail::__variant::__erased_ctor<Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>&, Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>> const&>(void*, void*) (/work/groups/ssoft/compiler/llvm/aarch64/main-202501
20-69d3ba3db922/bin/flang+0x4d38528)
#11 0x0000000004d37780 void std::__detail::__variant::__erased_ctor<Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>&, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>> const&>(void*, void*) (/work/groups/ssoft/compiler/llvm/aarch64/main-2025
0120-69d3ba3db922/bin/flang+0x4d37780)
#12 0x000000000514bbf8 Fortran::evaluate::SetExprHelper::Set(Fortran::common::ForwardOwningPointer<Fortran::evaluate::GenericExprWrapper>&) Clauses.cpp:0:0
#13 0x0000000005225610 void Fortran::evaluate::SetExpr<Fortran::parser::Expr>(Fortran::parser::Expr const&, Fortran::evaluate::Expr<Fortran::evaluate::SomeType>&&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x5225610)
#14 0x000000000524b0cc std::optional<Fortran::evaluate::Expr<Fortran::evaluate::SomeType>> Fortran::evaluate::ExpressionAnalyzer::ExprOrVariable<Fortran::parser::Expr>(Fortran::parser::Expr const&, Fortran::parser::CharBlock) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x524b0cc)
#15 0x000000000524b7dc Fortran::evaluate::ExpressionAnalyzer::Analyze(Fortran::parser::Expr const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x524b7dc)
#16 0x000000000524b988 Fortran::evaluate::ArgumentAnalyzer::AnalyzeExprOrWholeAssumedSizeArray(Fortran::parser::Expr const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x524b988)
#17 0x000000000524bb90 Fortran::evaluate::ArgumentAnalyzer::AnalyzeExpr(Fortran::parser::Expr const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x524bb90)
#18 0x000000000524bdec std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<void (*)(Fortran::common::visitors<Fortran::evaluate::ArgumentAnalyzer::Analyze(Fortran::parser::ActualArgSpec const&, bool)::'lambda'(Fortran::common::Indirection<Fortran::parser::Expr, false> const&), Fortran:
:evaluate::ArgumentAnalyzer::Analyze(Fortran::parser::ActualArgSpec const&, bool)::'lambda0'(Fortran::parser::AltReturnSpec const&), Fortran::evaluate::ArgumentAnalyzer::Analyze(Fortran::parser::ActualArgSpec const&, bool)::'lambda1'(Fortran::parser::ActualArg::PercentRef const&), Fortran::evaluate::ArgumentAnalyzer
::Analyze(Fortran::parser::ActualArgSpec const&, bool)::'lambda2'(Fortran::parser::ActualArg::PercentVal const&)>&&, std::variant<Fortran::common::Indirection<Fortran::parser::Expr, false>, Fortran::parser::AltReturnSpec, Fortran::parser::ActualArg::PercentRef, Fortran::parser::ActualArg::PercentVal> const&)>, std::
tuple<std::variant<Fortran::common::Indirection<Fortran::parser::Expr, false>, Fortran::parser::AltReturnSpec, Fortran::parser::ActualArg::PercentRef, Fortran::parser::ActualArg::PercentVal> const&>, std::integer_sequence<unsigned long, 0ul>>::__visit_invoke(Fortran::common::visitors<Fortran::evaluate::ArgumentAnaly
zer::Analyze(Fortran::parser::ActualArgSpec const&, bool)::'lambda'(Fortran::common::Indirection<Fortran::parser::Expr, false> const&), Fortran::evaluate::ArgumentAnalyzer::Analyze(Fortran::parser::ActualArgSpec const&, bool)::'lambda0'(Fortran::parser::AltReturnSpec const&), Fortran::evaluate::ArgumentAnalyzer::Ana
lyze(Fortran::parser::ActualArgSpec const&, bool)::'lambda1'(Fortran::parser::ActualArg::PercentRef const&), Fortran::evaluate::ArgumentAnalyzer::Analyze(Fortran::parser::ActualArgSpec const&, bool)::'lambda2'(Fortran::parser::ActualArg::PercentVal const&)>&&, std::variant<Fortran::common::Indirection<Fortran::parse
r::Expr, false>, Fortran::parser::AltReturnSpec, Fortran::parser::ActualArg::PercentRef, Fortran::parser::ActualArg::PercentVal> const&) expression.cpp:0:0
#19 0x000000000522ab1c Fortran::evaluate::ArgumentAnalyzer::Analyze(Fortran::parser::ActualArgSpec const&, bool) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x522ab1c)
#20 0x000000000524ab70 Fortran::evaluate::ExpressionAnalyzer::Analyze(Fortran::parser::FunctionReference const&, std::optional<Fortran::parser::StructureConstructor>*) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x524ab70)
#21 0x000000000524b01c std::optional<Fortran::evaluate::Expr<Fortran::evaluate::SomeType>> Fortran::evaluate::ExpressionAnalyzer::ExprOrVariable<Fortran::parser::Expr>(Fortran::parser::Expr const&, Fortran::parser::CharBlock) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x524b01c)
#22 0x000000000524b6ac Fortran::evaluate::ExpressionAnalyzer::IterativelyAnalyzeSubexpressions(Fortran::parser::Expr const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x524b6ac)
#23 0x000000000524b888 Fortran::evaluate::ExpressionAnalyzer::Analyze(Fortran::parser::Expr const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x524b888)
#24 0x0000000005155ae8 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&) Clauses.cpp:0:0
#25 0x00000000053277dc 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::pars
er::Expr, false>> const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x53277dc)
#26 0x00000000053278cc std::optional<Fortran::evaluate::Expr<Fortran::evaluate::SomeType>> Fortran::semantics::BaseVisitor::EvaluateNonPointerInitializer<Fortran::parser::Constant<Fortran::common::Indirection<Fortran::parser::Expr, false>>>(Fortran::semantics::Symbol const&, Fortran::parser::Constant<Fortran::common
::Indirection<Fortran::parser::Expr, false>> const&, Fortran::parser::CharBlock) resolve-names.cpp:0:0
#27 0x0000000005327b08 Fortran::semantics::DeclarationVisitor::NonPointerInitialization(Fortran::parser::Name const&, Fortran::parser::Constant<Fortran::common::Indirection<Fortran::parser::Expr, false>> const&) (.part.35105) resolve-names.cpp:0:0
#28 0x00000000052ecda8 Fortran::semantics::DeclarationVisitor::Initialization(Fortran::parser::Name const&, Fortran::parser::Initialization const&, bool) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x52ecda8)
#29 0x000000000531b588 Fortran::semantics::DeclarationVisitor::Post(Fortran::parser::EntityDecl const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x531b588)
#30 0x000000000531b774 std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<void (*)(void Fortran::parser::detail::ParseTreeVisitorLookupScope::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::common::Indirection<Fortran::parser::DerivedTypeDef, false>, Fortran::common::Indirectio
n<Fortran::parser::EnumDef, false>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::GenericStmt, false>>, Fortran::common::Indirection<Fortran::parser::InterfaceBlock, false>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::ParameterStmt, false>>, Fortran::parser::St
atement<Fortran::common::Indirection<Fortran::parser::OldParameterStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::ProcedureDeclarationStmt, false>>, Fortran::parser::Statement<Fortran::parser::OtherSpecificationStmt>, Fortran::parser::Statement<Fortran::common::Indirection<For
tran::parser::TypeDeclarationStmt, false>>, Fortran::common::Indirection<Fortran::parser::StructureDef, false>, Fortran::common::Indirection<Fortran::parser::OpenACCDeclarativeConstruct, false>, Fortran::common::Indirection<Fortran::parser::OpenMPDeclarativeConstruct, false>, Fortran::common::Indirection<Fortran::pa
rser::CompilerDirective, false>>(std::variant<Fortran::common::Indirection<Fortran::parser::DerivedTypeDef, false>, Fortran::common::Indirection<Fortran::parser::EnumDef, false>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::GenericStmt, false>>, Fortran::common::Indirection<Fortran::parse
r::InterfaceBlock, false>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::ParameterStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::OldParameterStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::ProcedureDeclaration
Stmt, false>>, Fortran::parser::Statement<Fortran::parser::OtherSpecificationStmt>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::TypeDeclarationStmt, false>>, Fortran::common::Indirection<Fortran::parser::StructureDef, false>, Fortran::common::Indirection<Fortran::parser::OpenACCDeclarati
veConstruct, false>, Fortran::common::Indirection<Fortran::parser::OpenMPDeclarativeConstruct, false>, Fortran::common::Indirection<Fortran::parser::CompilerDirective, false>> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&)&&, std::variant<Fortran::common::
Indirection<Fortran::parser::DerivedTypeDef, false>, Fortran::common::Indirection<Fortran::parser::EnumDef, false>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::GenericStmt, false>>, Fortran::common::Indirection<Fortran::parser::InterfaceBlock, false>, Fortran::parser::Statement<Fortran::
common::Indirection<Fortran::parser::ParameterStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::OldParameterStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::ProcedureDeclarationStmt, false>>, Fortran::parser::Statement<Fortran::parser::Othe
rSpecificationStmt>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::TypeDeclarationStmt, false>>, Fortran::common::Indirection<Fortran::parser::StructureDef, false>, Fortran::common::Indirection<Fortran::parser::OpenACCDeclarativeConstruct, false>, Fortran::common::Indirection<Fortran::pars
er::OpenMPDeclarativeConstruct, false>, Fortran::common::Indirection<Fortran::parser::CompilerDirective, false>> const&)>, std::tuple<std::variant<Fortran::common::Indirection<Fortran::parser::DerivedTypeDef, false>, Fortran::common::Indirection<Fortran::parser::EnumDef, false>, Fortran::parser::Statement<Fortran::c
ommon::Indirection<Fortran::parser::GenericStmt, false>>, Fortran::common::Indirection<Fortran::parser::InterfaceBlock, false>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::ParameterStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::OldParameterStmt, f
alse>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::ProcedureDeclarationStmt, false>>, Fortran::parser::Statement<Fortran::parser::OtherSpecificationStmt>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::TypeDeclarationStmt, false>>, Fortran::common::Indirection<
Fortran::parser::StructureDef, false>, Fortran::common::Indirection<Fortran::parser::OpenACCDeclarativeConstruct, false>, Fortran::common::Indirection<Fortran::parser::OpenMPDeclarativeConstruct, false>, Fortran::common::Indirection<Fortran::parser::CompilerDirective, false>> const&>, std::integer_sequence<unsigned
long, 8ul>>::__visit_invoke(void Fortran::parser::detail::ParseTreeVisitorLookupScope::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::common::Indirection<Fortran::parser::DerivedTypeDef, false>, Fortran::common::Indirection<Fortran::parser::EnumDef, false>, Fortran::parser::Statement<Fortran::common::Indirec
tion<Fortran::parser::GenericStmt, false>>, Fortran::common::Indirection<Fortran::parser::InterfaceBlock, false>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::ParameterStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::OldParameterStmt, false>>, Fortra
n::parser::Statement<Fortran::common::Indirection<Fortran::parser::ProcedureDeclarationStmt, false>>, Fortran::parser::Statement<Fortran::parser::OtherSpecificationStmt>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::TypeDeclarationStmt, false>>, Fortran::common::Indirection<Fortran::parse
r::StructureDef, false>, Fortran::common::Indirection<Fortran::parser::OpenACCDeclarativeConstruct, false>, Fortran::common::Indirection<Fortran::parser::OpenMPDeclarativeConstruct, false>, Fortran::common::Indirection<Fortran::parser::CompilerDirective, false>>(std::variant<Fortran::common::Indirection<Fortran::par
ser::DerivedTypeDef, false>, Fortran::common::Indirection<Fortran::parser::EnumDef, false>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::GenericStmt, false>>, Fortran::common::Indirection<Fortran::parser::InterfaceBlock, false>, Fortran::parser::Statement<Fortran::common::Indirection<Fort
ran::parser::ParameterStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::OldParameterStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::ProcedureDeclarationStmt, false>>, Fortran::parser::Statement<Fortran::parser::OtherSpecificationStmt>, For
tran::parser::Statement<Fortran::common::Indirection<Fortran::parser::TypeDeclarationStmt, false>>, Fortran::common::Indirection<Fortran::parser::StructureDef, false>, Fortran::common::Indirection<Fortran::parser::OpenACCDeclarativeConstruct, false>, Fortran::common::Indirection<Fortran::parser::OpenMPDeclarativeCon
struct, false>, Fortran::common::Indirection<Fortran::parser::CompilerDirective, false>> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&)&&, std::variant<Fortran::common::Indirection<Fortran::parser::DerivedTypeDef, false>, Fortran::common::Indirection<Fortr
an::parser::EnumDef, false>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::GenericStmt, false>>, Fortran::common::Indirection<Fortran::parser::InterfaceBlock, false>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::ParameterStmt, false>>, Fortran::parser::Statement
<Fortran::common::Indirection<Fortran::parser::OldParameterStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::ProcedureDeclarationStmt, false>>, Fortran::parser::Statement<Fortran::parser::OtherSpecificationStmt>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::p
arser::TypeDeclarationStmt, false>>, Fortran::common::Indirection<Fortran::parser::StructureDef, false>, Fortran::common::Indirection<Fortran::parser::OpenACCDeclarativeConstruct, false>, Fortran::common::Indirection<Fortran::parser::OpenMPDeclarativeConstruct, false>, Fortran::common::Indirection<Fortran::parser::C
ompilerDirective, false>> const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x531b774)
#31 0x00000000052cc184 std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<void (*)(void Fortran::parser::detail::ParseTreeVisitorLookupScope::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::SpecificationConstruct, Fortran::parser::Statement<Fortran::common::Indirection<
Fortran::parser::DataStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::FormatStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::EntryStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::StmtFunctionStmt, fal
se>>, Fortran::parser::ErrorRecovery>(std::variant<Fortran::parser::SpecificationConstruct, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::DataStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::FormatStmt, false>>, Fortran::parser::Statement<Fortran::com
mon::Indirection<Fortran::parser::EntryStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::StmtFunctionStmt, false>>, Fortran::parser::ErrorRecovery> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&)&&, std::variant<Fortran
::parser::SpecificationConstruct, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::DataStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::FormatStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::EntryStmt, false>>, Fort
ran::parser::Statement<Fortran::common::Indirection<Fortran::parser::StmtFunctionStmt, false>>, Fortran::parser::ErrorRecovery> const&)>, std::tuple<std::variant<Fortran::parser::SpecificationConstruct, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::DataStmt, false>>, Fortran::parser::State
ment<Fortran::common::Indirection<Fortran::parser::FormatStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::EntryStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::StmtFunctionStmt, false>>, Fortran::parser::ErrorRecovery> const&>, std::intege
r_sequence<unsigned long, 0ul>>::__visit_invoke(void Fortran::parser::detail::ParseTreeVisitorLookupScope::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::SpecificationConstruct, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::DataStmt, false>>, Fortran::parser::Statement<Fort
ran::common::Indirection<Fortran::parser::FormatStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::EntryStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::StmtFunctionStmt, false>>, Fortran::parser::ErrorRecovery>(std::variant<Fortran::parser:
:SpecificationConstruct, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::DataStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::FormatStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::EntryStmt, false>>, Fortran::pars
er::Statement<Fortran::common::Indirection<Fortran::parser::StmtFunctionStmt, false>>, Fortran::parser::ErrorRecovery> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&)&&, std::variant<Fortran::parser::SpecificationConstruct, Fortran::parser::Statement<Fortra
n::common::Indirection<Fortran::parser::DataStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::FormatStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::EntryStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser
::StmtFunctionStmt, false>>, Fortran::parser::ErrorRecovery> const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x52cc184)
#32 0x00000000053263f0 Fortran::semantics::ResolveNamesVisitor::Pre(Fortran::parser::SpecificationPart const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x53263f0)
#33 0x000000000532665c std::enable_if<TupleTrait<Fortran::parser::SpecificationPart>, void>::type Fortran::parser::detail::ParseTreeVisitorLookupScope::Walk<Fortran::parser::SpecificationPart, Fortran::semantics::ResolveNamesVisitor>(Fortran::parser::SpecificationPart const&, Fortran::semantics::ResolveNamesVisitor&
) resolve-names.cpp:0:0
#34 0x000000000532c448 Fortran::semantics::ResolveNamesVisitor::ResolveSpecificationParts(Fortran::semantics::ProgramTree&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x532c448)
#35 0x000000000532c8b4 Fortran::semantics::ResolveNamesVisitor::Pre(Fortran::parser::ProgramUnit const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x532c8b4)
#36 0x000000000532d18c Fortran::semantics::ResolveNames(Fortran::semantics::SemanticsContext&, Fortran::parser::Program const&, Fortran::semantics::Scope&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x532d18c)
#37 0x00000000053f1ba0 Fortran::semantics::Semantics::Perform() (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x53f1ba0)
#38 0x0000000004c39cf8 Fortran::frontend::FrontendAction::runSemanticChecks() (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x4c39cf8)
#39 0x0000000004d264cc Fortran::frontend::CodeGenAction::beginSourceFileAction() (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x4d264cc)
#40 0x0000000004c3bfcc Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x4c3bfcc)
#41 0x0000000004c2bb70 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x4c2bb70)
#42 0x0000000004c4085c Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x4c4085c)
#43 0x0000000004c24518 fc1_main(llvm::ArrayRef<char const*>, char const*) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x4c24518)
#44 0x0000000004c23f70 main (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x4c23f70)
#45 0x0000400023334384 __libc_start_main (/lib64/libc.so.6+0x24384)
#46 0x0000000004c2243c _start (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x4c2243c)
flang-20: error: unable to execute command: Aborted (core dumped)
flang-20: error: flang frontend command failed due to signal (use -v to see invocation)
flang version 20.0.0git (https://github.com/llvm/llvm-project.git 69d3ba3db922fca8cfc47b5f115b6bea6a737aab)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin
Build config: +assertions
flang-20: note: diagnostic msg:
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
flang-20: note: diagnostic msg: /tmp/UT_BESSEL_JN_010-856c84
flang-20: note: diagnostic msg: /tmp/UT_BESSEL_JN_010-856c84.sh
flang-20: note: diagnostic msg:

********************
$
$ cat /tmp/UT_BESSEL_JN_010-856c84
#line "./UT_BESSEL_JN_010.f90" 1
      PROGRAM test
      integer,parameter :: n(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2&
     &,2,2,2,2,2,2,2,2,2) =2
#line 3
      real,parameter :: x(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,&
     &2,2,2,2,2,2,2,2) =2
#line 4
      real,parameter ::rslt(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,&
     &2,2,2,2,2,2,2,2,2) = BESSEL_JN(n,x)
#line 5
      print*,rslt
      END PROGRAM
$
$ cat /tmp/UT_BESSEL_JN_010-856c84.sh
# Crash reproducer for clang version 20.0.0git (https://github.com/llvm/llvm-project.git 69d3ba3db922fca8cfc47b5f115b6bea6a737aab)
# Driver args: "UT_BESSEL_JN_010.f90"
# Original command:  "/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang" "-fc1" "-triple" "aarch64-unknown-linux-gnu" "-emit-obj" "-mrelocation-model" "pic" "-pic-level" "2" "-pic-is-pie" "-target-cpu" "generic" "-target-feature" "+outline-atomics" "-target-feature" "+v8a" "-target-featur
e" "+fp-armv8" "-target-feature" "+neon" "-resource-dir" "/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/lib/clang/20" "-mframe-pointer=non-leaf" "-o" "/tmp/UT_BESSEL_JN_010-d61bc9.o" "-x" "f95-cpp-input" "UT_BESSEL_JN_010.f90"
 "/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang" "-fc1" "-triple" "aarch64-unknown-linux-gnu" "-emit-obj" "-mrelocation-model" "pic" "-pic-level" "2" "-pic-is-pie" "-target-cpu" "generic" "-target-feature" "+outline-atomics" "-target-feature" "+v8a" "-target-feature" "+fp-armv8" "-tar
get-feature" "+neon" "-mframe-pointer=non-leaf" "-x" "f95-cpp-input" "UT_BESSEL_JN_010-856c84"
$
$ gfortran UT_BESSEL_JN_010.f90
UT_BESSEL_JN_010.f90:2:56:

    2 |   integer,parameter :: n(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2) =2
      |                                                        1
Error: Array specification at (1) has more than 15 dimensions
UT_BESSEL_JN_010.f90:3:53:

    3 |   real,parameter :: x(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2) =2
      |                                                     1
Error: Array specification at (1) has more than 15 dimensions
UT_BESSEL_JN_010.f90:4:55:

    4 |   real,parameter ::rslt(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2) = BESSEL_JN(n,x) !!!!  Rank > 30
      |                                                       1
Error: Array specification at (1) has more than 15 dimensions
$
$ ifx UT_BESSEL_JN_010.f90 -> Compilation of the attached program does not finish after 5 minutes.
$

Metadata

Metadata

Assignees

No one assigned

    Labels

    crashPrefer [crash-on-valid] or [crash-on-invalid]flang:frontend

    Type

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions