Closed k-arrows closed 1 year ago
Crashed by the following (reduced) test program:
$ cat min1.f90 print *, min1(2.0,a1=45.0,a2=5.0e0) end
Stack dump:
#0 0x0000556424c1fae0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) #1 0x0000556424c20130 SignalHandler(int) Signals.cpp:0:0 #2 0x00007fa2705aa520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520) #3 0x00007fa2705fea7c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76 #4 0x00007fa2705fea7c __pthread_kill_internal ./nptl/pthread_kill.c:78:10 #5 0x00007fa2705fea7c pthread_kill ./nptl/pthread_kill.c:89:10 #6 0x00007fa2705aa476 gsignal ./signal/../sysdeps/posix/raise.c:27:6 #7 0x00007fa2705907f3 abort ./stdlib/abort.c:81:7 #8 0x0000556424e01da7 #9 0x00005564254af03e Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>> Fortran::evaluate::RewriteSpecificMINorMAX<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>(Fortran::evaluate::FoldingContext&, Fortran::evaluate::FunctionRef<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>&&) #10 0x00005564254ab399 Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>> Fortran::evaluate::FoldIntrinsicFunction<4>(Fortran::evaluate::FoldingContext&, Fortran::evaluate::FunctionRef<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>&&) #11 0x00005564254a6bfc Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>> Fortran::evaluate::FoldOperation<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>(Fortran::evaluate::FoldingContext&, Fortran::evaluate::FunctionRef<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>&&) #12 0x000055642549e08a std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<std::__detail::__variant::__deduce_visit_result<Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>> (*)(Fortran::evaluate::ExpressionBase<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>::Rewrite(Fortran::evaluate::FoldingContext&, Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>&&)::'lambda'(auto&&)&&, std::variant<Fortran::evaluate::Parentheses<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::Negate<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::Add<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::Subtract<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::Multiply<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::Divide<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::Power<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::Extremum<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::Convert<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>, (Fortran::common::TypeCategory)0>, Fortran::evaluate::Convert<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>, (Fortran::common::TypeCategory)1>, Fortran::evaluate::Constant<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::ArrayConstructor<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::Designator<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::FunctionRef<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>>&&)>, std::integer_sequence<unsigned long, 13ul>>::__visit_invoke(Fortran::evaluate::ExpressionBase<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>::Rewrite(Fortran::evaluate::FoldingContext&, Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>&&)::'lambda'(auto&&)&&, std::variant<Fortran::evaluate::Parentheses<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::Negate<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::Add<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::Subtract<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::Multiply<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::Divide<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::Power<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::Extremum<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::Convert<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>, (Fortran::common::TypeCategory)0>, Fortran::evaluate::Convert<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>, (Fortran::common::TypeCategory)1>, Fortran::evaluate::Constant<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::ArrayConstructor<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::Designator<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::FunctionRef<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>>&&) #13 0x00005564254f819f auto std::__invoke_impl<Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>, Fortran::evaluate::ExpressionBase<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>::Rewrite(Fortran::evaluate::FoldingContext&, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>&&)::'lambda'(auto&&), Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>>(std::__invoke_other, Fortran::evaluate::ExpressionBase<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>::Rewrite(Fortran::evaluate::FoldingContext&, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>&&)::'lambda'(auto&&)&&, Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>&&) #14 0x00005564254f8015 std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<std::__detail::__variant::__deduce_visit_result<Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>> (*)(Fortran::evaluate::ExpressionBase<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>::Rewrite(Fortran::evaluate::FoldingContext&, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>&&)::'lambda'(auto&&)&&, std::variant<Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 1>>, Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 2>>, Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 8>>, Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 16>>>&&)>, std::integer_sequence<unsigned long, 2ul>>::__visit_invoke(Fortran::evaluate::ExpressionBase<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>::Rewrite(Fortran::evaluate::FoldingContext&, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>&&)::'lambda'(auto&&)&&, std::variant<Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 1>>, Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 2>>, Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 4>>, Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 8>>, Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 16>>>&&) #15 0x000055642542e90a Fortran::evaluate::ExpressionBase<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>::Rewrite(Fortran::evaluate::FoldingContext&, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>&&) #16 0x000055642538d74e auto std::__invoke_impl<Fortran::evaluate::Expr<Fortran::evaluate::SomeType>, Fortran::evaluate::ExpressionBase<Fortran::evaluate::SomeType>::Rewrite(Fortran::evaluate::FoldingContext&, Fortran::evaluate::Expr<Fortran::evaluate::SomeType>&&)::'lambda'(auto&&), Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>>(std::__invoke_other, Fortran::evaluate::ExpressionBase<Fortran::evaluate::SomeType>::Rewrite(Fortran::evaluate::FoldingContext&, Fortran::evaluate::Expr<Fortran::evaluate::SomeType>&&)::'lambda'(auto&&)&&, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>&&) #17 0x000055642538d6e5 std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<std::__detail::__variant::__deduce_visit_result<Fortran::evaluate::Expr<Fortran::evaluate::SomeType>> (*)(Fortran::evaluate::ExpressionBase<Fortran::evaluate::SomeType>::Rewrite(Fortran::evaluate::FoldingContext&, Fortran::evaluate::Expr<Fortran::evaluate::SomeType>&&)::'lambda'(auto&&)&&, std::variant<Fortran::evaluate::value::Integer<128, true, 32, unsigned int, unsigned long>, Fortran::evaluate::NullPointer, Fortran::evaluate::ProcedureDesignator, Fortran::evaluate::ProcedureRef, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)1>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)2>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)3>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)4>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)5>>>&&)>, std::integer_sequence<unsigned long, 4ul>>::__visit_invoke(Fortran::evaluate::ExpressionBase<Fortran::evaluate::SomeType>::Rewrite(Fortran::evaluate::FoldingContext&, Fortran::evaluate::Expr<Fortran::evaluate::SomeType>&&)::'lambda'(auto&&)&&, std::variant<Fortran::evaluate::value::Integer<128, true, 32, unsigned int, unsigned long>, Fortran::evaluate::NullPointer, Fortran::evaluate::ProcedureDesignator, Fortran::evaluate::ProcedureRef, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)1>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)2>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)3>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)4>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)5>>>&&) #18 0x0000556425385942 Fortran::evaluate::ExpressionBase<Fortran::evaluate::SomeType>::Rewrite(Fortran::evaluate::FoldingContext&, Fortran::evaluate::Expr<Fortran::evaluate::SomeType>&&) #19 0x00005564250c38e1 std::optional<Fortran::evaluate::Expr<Fortran::evaluate::SomeType>> Fortran::evaluate::ExpressionAnalyzer::ExprOrVariable<Fortran::parser::Expr>(Fortran::parser::Expr const&, Fortran::parser::CharBlock) #20 0x00005564250b61b8 Fortran::evaluate::ExpressionAnalyzer::Analyze(Fortran::parser::Expr const&) #21 0x00005564250f8b54 Fortran::semantics::ExprChecker::Pre(Fortran::parser::Expr const&) #22 0x00005564250f88be void Fortran::parser::Walk<Fortran::semantics::ExprChecker>(Fortran::parser::Expr const&, Fortran::semantics::ExprChecker&) #23 0x00005564250ffd0f void Fortran::parser::Walk<Fortran::parser::OutputItem, Fortran::semantics::ExprChecker>(std::__cxx11::list<Fortran::parser::OutputItem, std::allocator<Fortran::parser::OutputItem>> const&, Fortran::semantics::ExprChecker&) #24 0x00005564251000a3 void Fortran::parser::ForEachInTuple<0ul, void Fortran::parser::Walk<Fortran::semantics::ExprChecker, Fortran::parser::Format, std::__cxx11::list<Fortran::parser::OutputItem, std::allocator<Fortran::parser::OutputItem>>>(std::tuple<Fortran::parser::Format, std::__cxx11::list<Fortran::parser::OutputItem, std::allocator<Fortran::parser::OutputItem>>> const&, Fortran::semantics::ExprChecker&)::'lambda'(Fortran::semantics::ExprChecker const&), std::tuple<Fortran::parser::Format, std::__cxx11::list<Fortran::parser::OutputItem, std::allocator<Fortran::parser::OutputItem>>>>(std::tuple<Fortran::parser::Format, std::__cxx11::list<Fortran::parser::OutputItem, std::allocator<Fortran::parser::OutputItem>>> const&, void Fortran::parser::Walk<Fortran::semantics::ExprChecker, Fortran::parser::Format, std::__cxx11::list<Fortran::parser::OutputItem, std::allocator<Fortran::parser::OutputItem>>>(std::tuple<Fortran::parser::Format, std::__cxx11::list<Fortran::parser::OutputItem, std::allocator<Fortran::parser::OutputItem>>> const&, Fortran::semantics::ExprChecker&)::'lambda'(Fortran::semantics::ExprChecker const&)) #25 0x00005564250fe28c std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<std::__detail::__variant::__deduce_visit_result<void> (*)(void Fortran::parser::Walk<Fortran::semantics::ExprChecker, Fortran::parser::Statement<Fortran::parser::ActionStmt>, Fortran::common::Indirection<Fortran::parser::AssociateConstruct, false>, Fortran::common::Indirection<Fortran::parser::BlockConstruct, false>, Fortran::common::Indirection<Fortran::parser::CaseConstruct, false>, Fortran::common::Indirection<Fortran::parser::ChangeTeamConstruct, false>, Fortran::common::Indirection<Fortran::parser::CriticalConstruct, false>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::LabelDoStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::EndDoStmt, false>>, Fortran::common::Indirection<Fortran::parser::DoConstruct, false>, Fortran::common::Indirection<Fortran::parser::IfConstruct, false>, Fortran::common::Indirection<Fortran::parser::SelectRankConstruct, false>, Fortran::common::Indirection<Fortran::parser::SelectTypeConstruct, false>, Fortran::common::Indirection<Fortran::parser::WhereConstruct, false>, Fortran::common::Indirection<Fortran::parser::ForallConstruct, false>, Fortran::common::Indirection<Fortran::parser::CompilerDirective, false>, Fortran::common::Indirection<Fortran::parser::OpenACCConstruct, false>, Fortran::common::Indirection<Fortran::parser::AccEndCombinedDirective, false>, Fortran::common::Indirection<Fortran::parser::OpenMPConstruct, false>, Fortran::common::Indirection<Fortran::parser::OmpEndLoopDirective, false>, Fortran::common::Indirection<Fortran::parser::CUFKernelDoConstruct, false>>(std::variant<Fortran::parser::Statement<Fortran::parser::ActionStmt>, Fortran::common::Indirection<Fortran::parser::AssociateConstruct, false>, Fortran::common::Indirection<Fortran::parser::BlockConstruct, false>, Fortran::common::Indirection<Fortran::parser::CaseConstruct, false>, Fortran::common::Indirection<Fortran::parser::ChangeTeamConstruct, false>, Fortran::common::Indirection<Fortran::parser::CriticalConstruct, false>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::LabelDoStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::EndDoStmt, false>>, Fortran::common::Indirection<Fortran::parser::DoConstruct, false>, Fortran::common::Indirection<Fortran::parser::IfConstruct, false>, Fortran::common::Indirection<Fortran::parser::SelectRankConstruct, false>, Fortran::common::Indirection<Fortran::parser::SelectTypeConstruct, false>, Fortran::common::Indirection<Fortran::parser::WhereConstruct, false>, Fortran::common::Indirection<Fortran::parser::ForallConstruct, false>, Fortran::common::Indirection<Fortran::parser::CompilerDirective, false>, Fortran::common::Indirection<Fortran::parser::OpenACCConstruct, false>, Fortran::common::Indirection<Fortran::parser::AccEndCombinedDirective, false>, Fortran::common::Indirection<Fortran::parser::OpenMPConstruct, false>, Fortran::common::Indirection<Fortran::parser::OmpEndLoopDirective, false>, Fortran::common::Indirection<Fortran::parser::CUFKernelDoConstruct, false>> const&, Fortran::semantics::ExprChecker&)::'lambda'(Fortran::semantics::ExprChecker const&)&&, std::variant<Fortran::parser::Statement<Fortran::parser::ActionStmt>, Fortran::common::Indirection<Fortran::parser::AssociateConstruct, false>, Fortran::common::Indirection<Fortran::parser::BlockConstruct, false>, Fortran::common::Indirection<Fortran::parser::CaseConstruct, false>, Fortran::common::Indirection<Fortran::parser::ChangeTeamConstruct, false>, Fortran::common::Indirection<Fortran::parser::CriticalConstruct, false>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::LabelDoStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::EndDoStmt, false>>, Fortran::common::Indirection<Fortran::parser::DoConstruct, false>, Fortran::common::Indirection<Fortran::parser::IfConstruct, false>, Fortran::common::Indirection<Fortran::parser::SelectRankConstruct, false>, Fortran::common::Indirection<Fortran::parser::SelectTypeConstruct, false>, Fortran::common::Indirection<Fortran::parser::WhereConstruct, false>, Fortran::common::Indirection<Fortran::parser::ForallConstruct, false>, Fortran::common::Indirection<Fortran::parser::CompilerDirective, false>, Fortran::common::Indirection<Fortran::parser::OpenACCConstruct, false>, Fortran::common::Indirection<Fortran::parser::AccEndCombinedDirective, false>, Fortran::common::Indirection<Fortran::parser::OpenMPConstruct, false>, Fortran::common::Indirection<Fortran::parser::OmpEndLoopDirective, false>, Fortran::common::Indirection<Fortran::parser::CUFKernelDoConstruct, false>> const&)>, std::integer_sequence<unsigned long, 0ul>>::__visit_invoke(void Fortran::parser::Walk<Fortran::semantics::ExprChecker, Fortran::parser::Statement<Fortran::parser::ActionStmt>, Fortran::common::Indirection<Fortran::parser::AssociateConstruct, false>, Fortran::common::Indirection<Fortran::parser::BlockConstruct, false>, Fortran::common::Indirection<Fortran::parser::CaseConstruct, false>, Fortran::common::Indirection<Fortran::parser::ChangeTeamConstruct, false>, Fortran::common::Indirection<Fortran::parser::CriticalConstruct, false>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::LabelDoStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::EndDoStmt, false>>, Fortran::common::Indirection<Fortran::parser::DoConstruct, false>, Fortran::common::Indirection<Fortran::parser::IfConstruct, false>, Fortran::common::Indirection<Fortran::parser::SelectRankConstruct, false>, Fortran::common::Indirection<Fortran::parser::SelectTypeConstruct, false>, Fortran::common::Indirection<Fortran::parser::WhereConstruct, false>, Fortran::common::Indirection<Fortran::parser::ForallConstruct, false>, Fortran::common::Indirection<Fortran::parser::CompilerDirective, false>, Fortran::common::Indirection<Fortran::parser::OpenACCConstruct, false>, Fortran::common::Indirection<Fortran::parser::AccEndCombinedDirective, false>, Fortran::common::Indirection<Fortran::parser::OpenMPConstruct, false>, Fortran::common::Indirection<Fortran::parser::OmpEndLoopDirective, false>, Fortran::common::Indirection<Fortran::parser::CUFKernelDoConstruct, false>>(std::variant<Fortran::parser::Statement<Fortran::parser::ActionStmt>, Fortran::common::Indirection<Fortran::parser::AssociateConstruct, false>, Fortran::common::Indirection<Fortran::parser::BlockConstruct, false>, Fortran::common::Indirection<Fortran::parser::CaseConstruct, false>, Fortran::common::Indirection<Fortran::parser::ChangeTeamConstruct, false>, Fortran::common::Indirection<Fortran::parser::CriticalConstruct, false>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::LabelDoStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::EndDoStmt, false>>, Fortran::common::Indirection<Fortran::parser::DoConstruct, false>, Fortran::common::Indirection<Fortran::parser::IfConstruct, false>, Fortran::common::Indirection<Fortran::parser::SelectRankConstruct, false>, Fortran::common::Indirection<Fortran::parser::SelectTypeConstruct, false>, Fortran::common::Indirection<Fortran::parser::WhereConstruct, false>, Fortran::common::Indirection<Fortran::parser::ForallConstruct, false>, Fortran::common::Indirection<Fortran::parser::CompilerDirective, false>, Fortran::common::Indirection<Fortran::parser::OpenACCConstruct, false>, Fortran::common::Indirection<Fortran::parser::AccEndCombinedDirective, false>, Fortran::common::Indirection<Fortran::parser::OpenMPConstruct, false>, Fortran::common::Indirection<Fortran::parser::OmpEndLoopDirective, false>, Fortran::common::Indirection<Fortran::parser::CUFKernelDoConstruct, false>> const&, Fortran::semantics::ExprChecker&)::'lambda'(Fortran::semantics::ExprChecker const&)&&, std::variant<Fortran::parser::Statement<Fortran::parser::ActionStmt>, Fortran::common::Indirection<Fortran::parser::AssociateConstruct, false>, Fortran::common::Indirection<Fortran::parser::BlockConstruct, false>, Fortran::common::Indirection<Fortran::parser::CaseConstruct, false>, Fortran::common::Indirection<Fortran::parser::ChangeTeamConstruct, false>, Fortran::common::Indirection<Fortran::parser::CriticalConstruct, false>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::LabelDoStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::EndDoStmt, false>>, Fortran::common::Indirection<Fortran::parser::DoConstruct, false>, Fortran::common::Indirection<Fortran::parser::IfConstruct, false>, Fortran::common::Indirection<Fortran::parser::SelectRankConstruct, false>, Fortran::common::Indirection<Fortran::parser::SelectTypeConstruct, false>, Fortran::common::Indirection<Fortran::parser::WhereConstruct, false>, Fortran::common::Indirection<Fortran::parser::ForallConstruct, false>, Fortran::common::Indirection<Fortran::parser::CompilerDirective, false>, Fortran::common::Indirection<Fortran::parser::OpenACCConstruct, false>, Fortran::common::Indirection<Fortran::parser::AccEndCombinedDirective, false>, Fortran::common::Indirection<Fortran::parser::OpenMPConstruct, false>, Fortran::common::Indirection<Fortran::parser::OmpEndLoopDirective, false>, Fortran::common::Indirection<Fortran::parser::CUFKernelDoConstruct, false>> const&) #26 0x00005564250fe1d2 std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<std::__detail::__variant::__deduce_visit_result<void> (*)(void Fortran::parser::Walk<Fortran::semantics::ExprChecker, Fortran::parser::ExecutableConstruct, 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::DataStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::NamelistStmt, false>>, Fortran::parser::ErrorRecovery>(std::variant<Fortran::parser::ExecutableConstruct, 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::DataStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::NamelistStmt, false>>, Fortran::parser::ErrorRecovery> const&, Fortran::semantics::ExprChecker&)::'lambda'(Fortran::semantics::ExprChecker const&)&&, std::variant<Fortran::parser::ExecutableConstruct, 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::DataStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::NamelistStmt, false>>, Fortran::parser::ErrorRecovery> const&)>, std::integer_sequence<unsigned long, 0ul>>::__visit_invoke(void Fortran::parser::Walk<Fortran::semantics::ExprChecker, Fortran::parser::ExecutableConstruct, 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::DataStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::NamelistStmt, false>>, Fortran::parser::ErrorRecovery>(std::variant<Fortran::parser::ExecutableConstruct, 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::DataStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::NamelistStmt, false>>, Fortran::parser::ErrorRecovery> const&, Fortran::semantics::ExprChecker&)::'lambda'(Fortran::semantics::ExprChecker const&)&&, std::variant<Fortran::parser::ExecutableConstruct, 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::DataStmt, false>>, Fortran::parser::Statement<Fortran::common::Indirection<Fortran::parser::NamelistStmt, false>>, Fortran::parser::ErrorRecovery> const&) #27 0x00005564250fe196 void Fortran::parser::Walk<Fortran::semantics::ExprChecker>(std::__cxx11::list<Fortran::parser::ExecutionPartConstruct, std::allocator<Fortran::parser::ExecutionPartConstruct>> const&, Fortran::semantics::ExprChecker&) #28 0x00005564250fa3c9 void Fortran::parser::ForEachInTuple<2ul, void Fortran::parser::Walk<Fortran::semantics::ExprChecker, std::optional<Fortran::parser::Statement<Fortran::parser::ProgramStmt>>, Fortran::parser::SpecificationPart, Fortran::parser::ExecutionPart, std::optional<Fortran::parser::InternalSubprogramPart>, Fortran::parser::Statement<Fortran::parser::EndProgramStmt>>(std::tuple<std::optional<Fortran::parser::Statement<Fortran::parser::ProgramStmt>>, Fortran::parser::SpecificationPart, Fortran::parser::ExecutionPart, std::optional<Fortran::parser::InternalSubprogramPart>, Fortran::parser::Statement<Fortran::parser::EndProgramStmt>> const&, Fortran::semantics::ExprChecker&)::'lambda'(Fortran::semantics::ExprChecker const&), std::tuple<std::optional<Fortran::parser::Statement<Fortran::parser::ProgramStmt>>, Fortran::parser::SpecificationPart, Fortran::parser::ExecutionPart, std::optional<Fortran::parser::InternalSubprogramPart>, Fortran::parser::Statement<Fortran::parser::EndProgramStmt>>>(std::tuple<std::optional<Fortran::parser::Statement<Fortran::parser::ProgramStmt>>, Fortran::parser::SpecificationPart, Fortran::parser::ExecutionPart, std::optional<Fortran::parser::InternalSubprogramPart>, Fortran::parser::Statement<Fortran::parser::EndProgramStmt>> const&, void Fortran::parser::Walk<Fortran::semantics::ExprChecker, std::optional<Fortran::parser::Statement<Fortran::parser::ProgramStmt>>, Fortran::parser::SpecificationPart, Fortran::parser::ExecutionPart, std::optional<Fortran::parser::InternalSubprogramPart>, Fortran::parser::Statement<Fortran::parser::EndProgramStmt>>(std::tuple<std::optional<Fortran::parser::Statement<Fortran::parser::ProgramStmt>>, Fortran::parser::SpecificationPart, Fortran::parser::ExecutionPart, std::optional<Fortran::parser::InternalSubprogramPart>, Fortran::parser::Statement<Fortran::parser::EndProgramStmt>> const&, Fortran::semantics::ExprChecker&)::'lambda'(Fortran::semantics::ExprChecker const&)) #29 0x00005564250fa31d void Fortran::parser::Walk<Fortran::parser::ProgramUnit, Fortran::semantics::ExprChecker>(std::__cxx11::list<Fortran::parser::ProgramUnit, std::allocator<Fortran::parser::ProgramUnit>> const&, Fortran::semantics::ExprChecker&) #30 0x00005564250c7bc9 Fortran::semantics::ExprChecker::Walk(Fortran::parser::Program const&) #31 0x0000556425191fc8 Fortran::semantics::Semantics::Perform() #32 0x0000556424c40721 Fortran::frontend::FrontendAction::runSemanticChecks() #33 0x0000556424d5f8ca Fortran::frontend::CodeGenAction::beginSourceFileAction() #34 0x0000556424c3fdff Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&) #35 0x0000556424c38508 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) #36 0x0000556424c42a1c Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) #37 0x0000556423cc3554 fc1_main(llvm::ArrayRef<char const*>, char const*) #38 0x0000556423cc1702 main #39 0x00007fa270591d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16 #40 0x00007fa270591e40 call_init ./csu/../csu/libc-start.c:128:20 #41 0x00007fa270591e40 __libc_start_main ./csu/../csu/libc-start.c:379:5 #42 0x0000556423cc0b65 _start flang-new: error: unable to execute command: Aborted flang-new: error: flang frontend command failed due to signal (use -v to see invocation) flang-new version 17.0.0 (https://github.com/llvm/llvm-project.git 41f8b6fe74a916937a23e6f3f7655ff3f9101185) Target: x86_64-unknown-linux-gnu Thread model: posix
The original: https://github.com/llvm/llvm-test-suite/blob/main/Fortran/gfortran/regression/min_max_conformance_2.f90
@llvm/issue-subscribers-flang-frontend
@llvm/issue-subscribers-bug
https://reviews.llvm.org/D153470
Crashed by the following (reduced) test program:
Stack dump:
The original: https://github.com/llvm/llvm-test-suite/blob/main/Fortran/gfortran/regression/min_max_conformance_2.f90