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] crash with "fatal internal error: PASS argument name not in dummy argument list at" (gfortran/regression/type_bound_call_9.f03) #63487

Closed
k-arrows opened this issue Jun 24, 2023 · 3 comments
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 24, 2023

Crashed by the following program:
https://github.com/llvm/llvm-test-suite/blob/main/Fortran/gfortran/regression/typebound_call_9.f03

Step to reproduce:

flang-new -c typebound_call_9.f03

Stack dump:

 #0 0x00005607bf8ddc90 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int)
 #1 0x00005607bf8de2e0 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f47b3e17520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x00007f47b3e6ba7c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #4 0x00007f47b3e6ba7c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #5 0x00007f47b3e6ba7c pthread_kill ./nptl/pthread_kill.c:89:10
 #6 0x00007f47b3e17476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #7 0x00007f47b3dfd7f3 abort ./stdlib/abort.c:81:7
 #8 0x00005607c052aa1a Fortran::common::getFlangRepositoryPath[abi:cxx11]()
 #9 0x00005607bfd968d6 Fortran::evaluate::GetPassIndex(Fortran::semantics::Symbol const&) expression.cpp:0:0
#10 0x00005607bfd882fb Fortran::evaluate::AddPassArg(std::vector<std::optional<Fortran::evaluate::ActualArgument>, std::allocator<std::optional<Fortran::evaluate::ActualArgument>>>&, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)5>> const&, Fortran::semantics::Symbol const&, bool) expression.cpp:0:0
#11 0x00005607bfd87854 Fortran::evaluate::ExpressionAnalyzer::AnalyzeProcedureComponentRef(Fortran::parser::ProcComponentRef const&, std::vector<std::optional<Fortran::evaluate::ActualArgument>, std::allocator<std::optional<Fortran::evaluate::ActualArgument>>>&&, bool)
#12 0x00005607bfd96fae std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<std::__detail::__variant::__deduce_visit_result<std::optional<Fortran::evaluate::ExpressionAnalyzer::CalleeAndArguments>> (*)(Fortran::common::visitors<Fortran::evaluate::ExpressionAnalyzer::GetCalleeAndArguments(Fortran::parser::ProcedureDesignator const&, std::vector<std::optional<Fortran::evaluate::ActualArgument>, std::allocator<std::optional<Fortran::evaluate::ActualArgument>>>&&, bool, bool)::$_28, Fortran::evaluate::ExpressionAnalyzer::GetCalleeAndArguments(Fortran::parser::ProcedureDesignator const&, std::vector<std::optional<Fortran::evaluate::ActualArgument>, std::allocator<std::optional<Fortran::evaluate::ActualArgument>>>&&, bool, bool)::$_29>&&, std::variant<Fortran::parser::Name, Fortran::parser::ProcComponentRef> const&)>, std::integer_sequence<unsigned long, 1ul>>::__visit_invoke(Fortran::common::visitors<Fortran::evaluate::ExpressionAnalyzer::GetCalleeAndArguments(Fortran::parser::ProcedureDesignator const&, std::vector<std::optional<Fortran::evaluate::ActualArgument>, std::allocator<std::optional<Fortran::evaluate::ActualArgument>>>&&, bool, bool)::$_28, Fortran::evaluate::ExpressionAnalyzer::GetCalleeAndArguments(Fortran::parser::ProcedureDesignator const&, std::vector<std::optional<Fortran::evaluate::ActualArgument>, std::allocator<std::optional<Fortran::evaluate::ActualArgument>>>&&, bool, bool)::$_29>&&, std::variant<Fortran::parser::Name, Fortran::parser::ProcComponentRef> const&) expression.cpp:0:0
#13 0x00005607bfd88a78 Fortran::evaluate::ExpressionAnalyzer::GetCalleeAndArguments(Fortran::parser::ProcedureDesignator const&, std::vector<std::optional<Fortran::evaluate::ActualArgument>, std::allocator<std::optional<Fortran::evaluate::ActualArgument>>>&&, bool, bool)
#14 0x00005607bfd8a13f Fortran::evaluate::ExpressionAnalyzer::Analyze(Fortran::parser::CallStmt const&)
#15 0x00005607bfdc90a8 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&)
#16 0x00005607bfdc8fee 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&)
#17 0x00005607bfdc8fb2 void Fortran::parser::Walk<Fortran::semantics::ExprChecker>(std::__cxx11::list<Fortran::parser::ExecutionPartConstruct, std::allocator<Fortran::parser::ExecutionPartConstruct>> const&, Fortran::semantics::ExprChecker&)
#18 0x00005607bfdccc1b void Fortran::parser::ForEachInTuple<2ul, void Fortran::parser::Walk<Fortran::semantics::ExprChecker, Fortran::parser::Statement<Fortran::parser::SubroutineStmt>, Fortran::parser::SpecificationPart, Fortran::parser::ExecutionPart, std::optional<Fortran::parser::InternalSubprogramPart>, Fortran::parser::Statement<Fortran::parser::EndSubroutineStmt>>(std::tuple<Fortran::parser::Statement<Fortran::parser::SubroutineStmt>, Fortran::parser::SpecificationPart, Fortran::parser::ExecutionPart, std::optional<Fortran::parser::InternalSubprogramPart>, Fortran::parser::Statement<Fortran::parser::EndSubroutineStmt>> const&, Fortran::semantics::ExprChecker&)::'lambda'(Fortran::semantics::ExprChecker const&), std::tuple<Fortran::parser::Statement<Fortran::parser::SubroutineStmt>, Fortran::parser::SpecificationPart, Fortran::parser::ExecutionPart, std::optional<Fortran::parser::InternalSubprogramPart>, Fortran::parser::Statement<Fortran::parser::EndSubroutineStmt>>>(std::tuple<Fortran::parser::Statement<Fortran::parser::SubroutineStmt>, Fortran::parser::SpecificationPart, Fortran::parser::ExecutionPart, std::optional<Fortran::parser::InternalSubprogramPart>, Fortran::parser::Statement<Fortran::parser::EndSubroutineStmt>> const&, void Fortran::parser::Walk<Fortran::semantics::ExprChecker, Fortran::parser::Statement<Fortran::parser::SubroutineStmt>, Fortran::parser::SpecificationPart, Fortran::parser::ExecutionPart, std::optional<Fortran::parser::InternalSubprogramPart>, Fortran::parser::Statement<Fortran::parser::EndSubroutineStmt>>(std::tuple<Fortran::parser::Statement<Fortran::parser::SubroutineStmt>, Fortran::parser::SpecificationPart, Fortran::parser::ExecutionPart, std::optional<Fortran::parser::InternalSubprogramPart>, Fortran::parser::Statement<Fortran::parser::EndSubroutineStmt>> const&, Fortran::semantics::ExprChecker&)::'lambda'(Fortran::semantics::ExprChecker const&))
#19 0x00005607bfdcccc2 void Fortran::parser::Walk<Fortran::parser::ModuleSubprogram, Fortran::semantics::ExprChecker>(std::__cxx11::list<Fortran::parser::ModuleSubprogram, std::allocator<Fortran::parser::ModuleSubprogram>> const&, Fortran::semantics::ExprChecker&)
#20 0x00005607bfdc5097 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&)
#21 0x00005607bfd92943 Fortran::semantics::ExprChecker::Walk(Fortran::parser::Program const&)
#22 0x00005607bfe5cdbe Fortran::semantics::Semantics::Perform()
#23 0x00005607bf8febe7 Fortran::frontend::FrontendAction::runSemanticChecks()
#24 0x00005607bfa2344a Fortran::frontend::CodeGenAction::beginSourceFileAction()
#25 0x00005607bf8fe2c5 Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&)
#26 0x00005607bf8f68f4 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&)
#27 0x00005607bf900ee2 Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*)
#28 0x00005607be9728c4 fc1_main(llvm::ArrayRef<char const*>, char const*)
#29 0x00005607be970a72 main
#30 0x00007f47b3dfed90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#31 0x00007f47b3dfee40 call_init ./csu/../csu/libc-start.c:128:20
#32 0x00007f47b3dfee40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#33 0x00005607be96fed5 _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 71ac2a8e23f1587ca6243378d663aedf10b46642)
Target: x86_64-unknown-linux-gnu
Thread model: posix

FYI (GFortran):

$ gfortran -c typebound_call_9.f03
typebound_call_9.f03:19:13:

   19 |     procedure, pass(a) :: makenull ! { dg-error "has no argument 'a'" }
      |             1
Error: Procedure ‘makenull’ with PASS(a) at (1) has no argument ‘a’
typebound_call_9.f03:20:23:

   20 |     generic :: null2 => makenull   ! { dg-error "Undefined specific binding" }
      |                       1
Error: Undefined specific binding ‘makenull’ as target of GENERIC ‘null2’ at (1)
typebound_call_9.f03:53:59:

   53 |     call a%null2 () ! { dg-error "should be a SUBROUTINE" }
      |                                                           1
Error: ‘null2’ at (1) should be a SUBROUTINE

This program seems to test whether the compiler can correctly output errors for invalid programs, so some kind of error handling is probably missing in Flang.

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

llvmbot commented Jun 24, 2023

@llvm/issue-subscribers-flang-frontend

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

llvmbot commented Jun 24, 2023

@llvm/issue-subscribers-bug

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

https://reviews.llvm.org/D153792

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
Projects
None yet
Development

No branches or pull requests

5 participants