Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[flang] flang-new crashes (gfortran/regression/min_max_conformance_2.f90) #63140

Closed
k-arrows opened this issue Jun 6, 2023 · 3 comments
Closed
Assignees
Labels
bug Indicates an unexpected problem or unintended behavior crash Prefer [crash-on-valid] or [crash-on-invalid] flang:frontend

Comments

@k-arrows
Copy link

k-arrows commented Jun 6, 2023

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

@EugeneZelenko EugeneZelenko added flang:frontend crash Prefer [crash-on-valid] or [crash-on-invalid] and removed new issue labels Jun 6, 2023
@llvmbot
Copy link
Collaborator

llvmbot commented Jun 6, 2023

@llvm/issue-subscribers-flang-frontend

@psteinfeld psteinfeld added the bug Indicates an unexpected problem or unintended behavior label Jun 6, 2023
@llvmbot
Copy link
Collaborator

llvmbot commented Jun 6, 2023

@llvm/issue-subscribers-bug

@klausler klausler self-assigned this Jun 21, 2023
@klausler
Copy link
Contributor

https://reviews.llvm.org/D153470

Chenyang-L pushed a commit to intel/llvm that referenced this issue Jul 11, 2023
When a specific MIN/MAX intrinsic function (e.g. MAX1) reference
has an actual argument error, ensure that a later attempt to fold
the call into a constant doesn't crash due to a missing argument.
Fixes llvm/llvm-project#63140

Differential Revision: https://reviews.llvm.org/D153470
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Indicates an unexpected problem or unintended behavior crash Prefer [crash-on-valid] or [crash-on-invalid] flang:frontend
Development

No branches or pull requests

5 participants