llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
27.68k stars 11.39k forks source link

[flang] [OpenMP] assertion failure (gcc/testsuite/gfortran.dg/gomp/pr89651.f90) #63752

Closed k-arrows closed 3 hours ago

k-arrows commented 1 year ago

Consider the following test program. https://github.com/gcc-mirror/gcc/blob/master/gcc/testsuite/gfortran.dg/gomp/pr89651.f90

As of LLVM16.0.4, compiling this program produced the following message:

error: loc("./pr89651.f90":9:3): /home/runner/work/llvm-project/llvm-project/final/llvm-project/flang/lib/Lower/Allocatable.cpp:562: not yet implemented: allocate array object with scalar SOURCE specifier

Until recently, compiling this program with flang-new resulted in the following error message:

error: loc("./pr89651.f90":9:3): operand #0 does not dominate this use
error: verification of lowering to FIR failed

And when compiling this program with the latest flang-new, it crashed as follows:

Assertion (flang/lib/Lower/ConvertExpr.cpp:5637):

 (anonymous namespace)::ArrayExprLowering::CC (anonymous namespace)::ArrayExprLowering::genarr(const (anonymous namespace)::ArrayExprLowering::ExtValue &, (anonymous namespace)::ArrayExprLowering::ComponentPath &): Assertion `arrTy.isa<fir::SequenceType>() && "memory ref must be an array"' failed.

Stack dump:

 #0 0x000055b97bf644e2 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) 
 #1 0x000055b97bf64b32 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f805a70a520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x00007f805a75ea7c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #4 0x00007f805a75ea7c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #5 0x00007f805a75ea7c pthread_kill ./nptl/pthread_kill.c:89:10
 #6 0x00007f805a70a476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #7 0x00007f805a6f07f3 abort ./stdlib/abort.c:81:7
 #8 0x00007f805a6f071b _nl_load_domain ./intl/loadmsgcat.c:1177:9
 #9 0x00007f805a701e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#10 0x000055b97c1d8dac (anonymous namespace)::ArrayExprLowering::genarr(fir::ExtendedValue const&, Fortran::lower::ComponentPath&) ConvertExpr.cpp:0:0
#11 0x000055b97c1bfb62 (anonymous namespace)::ArrayExprLowering::genarr(fir::ExtendedValue const&) ConvertExpr.cpp:0:0
#12 0x000055b97c1ad5f2 Fortran::lower::createSomeArrayAssignment(Fortran::lower::AbstractConverter&, fir::ExtendedValue const&, fir::ExtendedValue const&, Fortran::lower::SymMap&, Fortran::lower::StatementContext&) 
#13 0x000055b97c145a71 (anonymous namespace)::FirConverter::copyHostAssociateVar(Fortran::semantics::Symbol const&, mlir::OpBuilder::InsertPoint*) Bridge.cpp:0:0
#14 0x000055b97c37d013 DataSharingProcessor::privatize() 
#15 0x000055b97c37ce3f DataSharingProcessor::processStep1()
#16 0x000055b97c388fe2 void createBodyOfOp<mlir::omp::ParallelOp>(mlir::omp::ParallelOp&, Fortran::lower::AbstractConverter&, mlir::Location&, Fortran::lower::pft::Evaluation&, Fortran::parser::OmpClauseList const*, llvm::SmallVector<Fortran::semantics::Symbol const*, 6u> const&, bool, DataSharingProcessor*) OpenMP.cpp:0:0
#17 0x000055b97c383e77 std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<std::__detail::__variant::__deduce_visit_result<void> (*)(Fortran::common::visitors<Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&)::$_19, Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&)::$_20, Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&)::$_21, Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&)::$_22, Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&)::$_23, Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&)::$_24, Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&)::$_25, Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&)::$_26, Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&)::$_27, Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&)::$_28>&&, std::variant<Fortran::parser::OpenMPStandaloneConstruct, Fortran::parser::OpenMPSectionsConstruct, Fortran::parser::OpenMPSectionConstruct, Fortran::parser::OpenMPLoopConstruct, Fortran::parser::OpenMPBlockConstruct, Fortran::parser::OpenMPAtomicConstruct, Fortran::parser::OpenMPDeclarativeAllocate, Fortran::parser::OpenMPExecutableAllocate, Fortran::parser::OpenMPAllocatorsConstruct, Fortran::parser::OpenMPCriticalConstruct> const&)>, std::integer_sequence<unsigned long, 4ul>>::__visit_invoke(Fortran::common::visitors<Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&)::$_19, Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&)::$_20, Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&)::$_21, Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&)::$_22, Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&)::$_23, Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&)::$_24, Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&)::$_25, Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&)::$_26, Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&)::$_27, Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&)::$_28>&&, std::variant<Fortran::parser::OpenMPStandaloneConstruct, Fortran::parser::OpenMPSectionsConstruct, Fortran::parser::OpenMPSectionConstruct, Fortran::parser::OpenMPLoopConstruct, Fortran::parser::OpenMPBlockConstruct, Fortran::parser::OpenMPAtomicConstruct, Fortran::parser::OpenMPDeclarativeAllocate, Fortran::parser::OpenMPExecutableAllocate, Fortran::parser::OpenMPAllocatorsConstruct, Fortran::parser::OpenMPCriticalConstruct> const&) OpenMP.cpp:0:0
#18 0x000055b97c37df46 Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&) 
#19 0x000055b97c169b5d std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<std::__detail::__variant::__deduce_visit_result<void> (*)(Fortran::common::visitors<auto Fortran::lower::pft::ReferenceVariantBase<true, Fortran::parser::AllocateStmt, Fortran::parser::AssignmentStmt, Fortran::parser::BackspaceStmt, Fortran::parser::CallStmt, Fortran::parser::CloseStmt, Fortran::parser::ContinueStmt, Fortran::parser::CycleStmt, Fortran::parser::DeallocateStmt, Fortran::parser::EndfileStmt, Fortran::parser::EventPostStmt, Fortran::parser::EventWaitStmt, Fortran::parser::ExitStmt, Fortran::parser::FailImageStmt, Fortran::parser::FlushStmt, Fortran::parser::FormTeamStmt, Fortran::parser::GotoStmt, Fortran::parser::IfStmt, Fortran::parser::InquireStmt, Fortran::parser::LockStmt, Fortran::parser::NullifyStmt, Fortran::parser::OpenStmt, Fortran::parser::PointerAssignmentStmt, Fortran::parser::PrintStmt, Fortran::parser::ReadStmt, Fortran::parser::ReturnStmt, Fortran::parser::RewindStmt, Fortran::parser::StopStmt, Fortran::parser::SyncAllStmt, Fortran::parser::SyncImagesStmt, Fortran::parser::SyncMemoryStmt, Fortran::parser::SyncTeamStmt, Fortran::parser::UnlockStmt, Fortran::parser::WaitStmt, Fortran::parser::WhereStmt, Fortran::parser::WriteStmt, Fortran::parser::ComputedGotoStmt, Fortran::parser::ForallStmt, Fortran::parser::ArithmeticIfStmt, Fortran::parser::AssignStmt, Fortran::parser::AssignedGotoStmt, Fortran::parser::PauseStmt, Fortran::parser::EntryStmt, Fortran::parser::FormatStmt, Fortran::parser::AssociateStmt, Fortran::parser::EndAssociateStmt, Fortran::parser::BlockStmt, Fortran::parser::EndBlockStmt, Fortran::parser::SelectCaseStmt, Fortran::parser::CaseStmt, Fortran::parser::EndSelectStmt, Fortran::parser::ChangeTeamStmt, Fortran::parser::EndChangeTeamStmt, Fortran::parser::CriticalStmt, Fortran::parser::EndCriticalStmt, Fortran::parser::NonLabelDoStmt, Fortran::parser::EndDoStmt, Fortran::parser::IfThenStmt, Fortran::parser::ElseIfStmt, Fortran::parser::ElseStmt, Fortran::parser::EndIfStmt, Fortran::parser::SelectRankStmt, Fortran::parser::SelectRankCaseStmt, Fortran::parser::SelectTypeStmt, Fortran::parser::TypeGuardStmt, Fortran::parser::WhereConstructStmt, Fortran::parser::MaskedElsewhereStmt, Fortran::parser::ElsewhereStmt, Fortran::parser::EndWhereStmt, Fortran::parser::ForallConstructStmt, Fortran::parser::EndForallStmt, Fortran::parser::EndProgramStmt, Fortran::parser::EndFunctionStmt, Fortran::parser::EndSubroutineStmt, Fortran::parser::EndMpSubprogramStmt, Fortran::parser::AssociateConstruct, Fortran::parser::BlockConstruct, Fortran::parser::CaseConstruct, Fortran::parser::ChangeTeamConstruct, Fortran::parser::CriticalConstruct, Fortran::parser::DoConstruct, Fortran::parser::IfConstruct, Fortran::parser::SelectRankConstruct, Fortran::parser::SelectTypeConstruct, Fortran::parser::WhereConstruct, Fortran::parser::ForallConstruct, Fortran::parser::CompilerDirective, Fortran::parser::OpenACCConstruct, Fortran::parser::OpenACCDeclarativeConstruct, Fortran::parser::OpenMPConstruct, Fortran::parser::OpenMPDeclarativeConstruct, Fortran::parser::OmpEndLoopDirective>::visit<(anonymous namespace)::FirConverter::genFIR(Fortran::lower::pft::Evaluation&, bool)::'lambda'(auto const&)>(auto&&) const::'lambda'(auto)>&&, std::variant<Fortran::common::Reference<Fortran::parser::AllocateStmt const>, Fortran::common::Reference<Fortran::parser::AssignmentStmt const>, Fortran::common::Reference<Fortran::parser::BackspaceStmt const>, Fortran::common::Reference<Fortran::parser::CallStmt const>, Fortran::common::Reference<Fortran::parser::CloseStmt const>, Fortran::common::Reference<Fortran::parser::ContinueStmt const>, Fortran::common::Reference<Fortran::parser::CycleStmt const>, Fortran::common::Reference<Fortran::parser::DeallocateStmt const>, Fortran::common::Reference<Fortran::parser::EndfileStmt const>, Fortran::common::Reference<Fortran::parser::EventPostStmt const>, Fortran::common::Reference<Fortran::parser::EventWaitStmt const>, Fortran::common::Reference<Fortran::parser::ExitStmt const>, Fortran::common::Reference<Fortran::parser::FailImageStmt const>, Fortran::common::Reference<Fortran::parser::FlushStmt const>, Fortran::common::Reference<Fortran::parser::FormTeamStmt const>, Fortran::common::Reference<Fortran::parser::GotoStmt const>, Fortran::common::Reference<Fortran::parser::IfStmt const>, Fortran::common::Reference<Fortran::parser::InquireStmt const>, Fortran::common::Reference<Fortran::parser::LockStmt const>, Fortran::common::Reference<Fortran::parser::NullifyStmt const>, Fortran::common::Reference<Fortran::parser::OpenStmt const>, Fortran::common::Reference<Fortran::parser::PointerAssignmentStmt const>, Fortran::common::Reference<Fortran::parser::PrintStmt const>, Fortran::common::Reference<Fortran::parser::ReadStmt const>, Fortran::common::Reference<Fortran::parser::ReturnStmt const>, Fortran::common::Reference<Fortran::parser::RewindStmt const>, Fortran::common::Reference<Fortran::parser::StopStmt const>, Fortran::common::Reference<Fortran::parser::SyncAllStmt const>, Fortran::common::Reference<Fortran::parser::SyncImagesStmt const>, Fortran::common::Reference<Fortran::parser::SyncMemoryStmt const>, Fortran::common::Reference<Fortran::parser::SyncTeamStmt const>, Fortran::common::Reference<Fortran::parser::UnlockStmt const>, Fortran::common::Reference<Fortran::parser::WaitStmt const>, Fortran::common::Reference<Fortran::parser::WhereStmt const>, Fortran::common::Reference<Fortran::parser::WriteStmt const>, Fortran::common::Reference<Fortran::parser::ComputedGotoStmt const>, Fortran::common::Reference<Fortran::parser::ForallStmt const>, Fortran::common::Reference<Fortran::parser::ArithmeticIfStmt const>, Fortran::common::Reference<Fortran::parser::AssignStmt const>, Fortran::common::Reference<Fortran::parser::AssignedGotoStmt const>, Fortran::common::Reference<Fortran::parser::PauseStmt const>, Fortran::common::Reference<Fortran::parser::EntryStmt const>, Fortran::common::Reference<Fortran::parser::FormatStmt const>, Fortran::common::Reference<Fortran::parser::AssociateStmt const>, Fortran::common::Reference<Fortran::parser::EndAssociateStmt const>, Fortran::common::Reference<Fortran::parser::BlockStmt const>, Fortran::common::Reference<Fortran::parser::EndBlockStmt const>, Fortran::common::Reference<Fortran::parser::SelectCaseStmt const>, Fortran::common::Reference<Fortran::parser::CaseStmt const>, Fortran::common::Reference<Fortran::parser::EndSelectStmt const>, Fortran::common::Reference<Fortran::parser::ChangeTeamStmt const>, Fortran::common::Reference<Fortran::parser::EndChangeTeamStmt const>, Fortran::common::Reference<Fortran::parser::CriticalStmt const>, Fortran::common::Reference<Fortran::parser::EndCriticalStmt const>, Fortran::common::Reference<Fortran::parser::NonLabelDoStmt const>, Fortran::common::Reference<Fortran::parser::EndDoStmt const>, Fortran::common::Reference<Fortran::parser::IfThenStmt const>, Fortran::common::Reference<Fortran::parser::ElseIfStmt const>, Fortran::common::Reference<Fortran::parser::ElseStmt const>, Fortran::common::Reference<Fortran::parser::EndIfStmt const>, Fortran::common::Reference<Fortran::parser::SelectRankStmt const>, Fortran::common::Reference<Fortran::parser::SelectRankCaseStmt const>, Fortran::common::Reference<Fortran::parser::SelectTypeStmt const>, Fortran::common::Reference<Fortran::parser::TypeGuardStmt const>, Fortran::common::Reference<Fortran::parser::WhereConstructStmt const>, Fortran::common::Reference<Fortran::parser::MaskedElsewhereStmt const>, Fortran::common::Reference<Fortran::parser::ElsewhereStmt const>, Fortran::common::Reference<Fortran::parser::EndWhereStmt const>, Fortran::common::Reference<Fortran::parser::ForallConstructStmt const>, Fortran::common::Reference<Fortran::parser::EndForallStmt const>, Fortran::common::Reference<Fortran::parser::EndProgramStmt const>, Fortran::common::Reference<Fortran::parser::EndFunctionStmt const>, Fortran::common::Reference<Fortran::parser::EndSubroutineStmt const>, Fortran::common::Reference<Fortran::parser::EndMpSubprogramStmt const>, Fortran::common::Reference<Fortran::parser::AssociateConstruct const>, Fortran::common::Reference<Fortran::parser::BlockConstruct const>, Fortran::common::Reference<Fortran::parser::CaseConstruct const>, Fortran::common::Reference<Fortran::parser::ChangeTeamConstruct const>, Fortran::common::Reference<Fortran::parser::CriticalConstruct const>, Fortran::common::Reference<Fortran::parser::DoConstruct const>, Fortran::common::Reference<Fortran::parser::IfConstruct const>, Fortran::common::Reference<Fortran::parser::SelectRankConstruct const>, Fortran::common::Reference<Fortran::parser::SelectTypeConstruct const>, Fortran::common::Reference<Fortran::parser::WhereConstruct const>, Fortran::common::Reference<Fortran::parser::ForallConstruct const>, Fortran::common::Reference<Fortran::parser::CompilerDirective const>, Fortran::common::Reference<Fortran::parser::OpenACCConstruct const>, Fortran::common::Reference<Fortran::parser::OpenACCDeclarativeConstruct const>, Fortran::common::Reference<Fortran::parser::OpenMPConstruct const>, Fortran::common::Reference<Fortran::parser::OpenMPDeclarativeConstruct const>, Fortran::common::Reference<Fortran::parser::OmpEndLoopDirective const>> const&)>, std::integer_sequence<unsigned long, 88ul>>::__visit_invoke(Fortran::common::visitors<auto Fortran::lower::pft::ReferenceVariantBase<true, Fortran::parser::AllocateStmt, Fortran::parser::AssignmentStmt, Fortran::parser::BackspaceStmt, Fortran::parser::CallStmt, Fortran::parser::CloseStmt, Fortran::parser::ContinueStmt, Fortran::parser::CycleStmt, Fortran::parser::DeallocateStmt, Fortran::parser::EndfileStmt, Fortran::parser::EventPostStmt, Fortran::parser::EventWaitStmt, Fortran::parser::ExitStmt, Fortran::parser::FailImageStmt, Fortran::parser::FlushStmt, Fortran::parser::FormTeamStmt, Fortran::parser::GotoStmt, Fortran::parser::IfStmt, Fortran::parser::InquireStmt, Fortran::parser::LockStmt, Fortran::parser::NullifyStmt, Fortran::parser::OpenStmt, Fortran::parser::PointerAssignmentStmt, Fortran::parser::PrintStmt, Fortran::parser::ReadStmt, Fortran::parser::ReturnStmt, Fortran::parser::RewindStmt, Fortran::parser::StopStmt, Fortran::parser::SyncAllStmt, Fortran::parser::SyncImagesStmt, Fortran::parser::SyncMemoryStmt, Fortran::parser::SyncTeamStmt, Fortran::parser::UnlockStmt, Fortran::parser::WaitStmt, Fortran::parser::WhereStmt, Fortran::parser::WriteStmt, Fortran::parser::ComputedGotoStmt, Fortran::parser::ForallStmt, Fortran::parser::ArithmeticIfStmt, Fortran::parser::AssignStmt, Fortran::parser::AssignedGotoStmt, Fortran::parser::PauseStmt, Fortran::parser::EntryStmt, Fortran::parser::FormatStmt, Fortran::parser::AssociateStmt, Fortran::parser::EndAssociateStmt, Fortran::parser::BlockStmt, Fortran::parser::EndBlockStmt, Fortran::parser::SelectCaseStmt, Fortran::parser::CaseStmt, Fortran::parser::EndSelectStmt, Fortran::parser::ChangeTeamStmt, Fortran::parser::EndChangeTeamStmt, Fortran::parser::CriticalStmt, Fortran::parser::EndCriticalStmt, Fortran::parser::NonLabelDoStmt, Fortran::parser::EndDoStmt, Fortran::parser::IfThenStmt, Fortran::parser::ElseIfStmt, Fortran::parser::ElseStmt, Fortran::parser::EndIfStmt, Fortran::parser::SelectRankStmt, Fortran::parser::SelectRankCaseStmt, Fortran::parser::SelectTypeStmt, Fortran::parser::TypeGuardStmt, Fortran::parser::WhereConstructStmt, Fortran::parser::MaskedElsewhereStmt, Fortran::parser::ElsewhereStmt, Fortran::parser::EndWhereStmt, Fortran::parser::ForallConstructStmt, Fortran::parser::EndForallStmt, Fortran::parser::EndProgramStmt, Fortran::parser::EndFunctionStmt, Fortran::parser::EndSubroutineStmt, Fortran::parser::EndMpSubprogramStmt, Fortran::parser::AssociateConstruct, Fortran::parser::BlockConstruct, Fortran::parser::CaseConstruct, Fortran::parser::ChangeTeamConstruct, Fortran::parser::CriticalConstruct, Fortran::parser::DoConstruct, Fortran::parser::IfConstruct, Fortran::parser::SelectRankConstruct, Fortran::parser::SelectTypeConstruct, Fortran::parser::WhereConstruct, Fortran::parser::ForallConstruct, Fortran::parser::CompilerDirective, Fortran::parser::OpenACCConstruct, Fortran::parser::OpenACCDeclarativeConstruct, Fortran::parser::OpenMPConstruct, Fortran::parser::OpenMPDeclarativeConstruct, Fortran::parser::OmpEndLoopDirective>::visit<(anonymous namespace)::FirConverter::genFIR(Fortran::lower::pft::Evaluation&, bool)::'lambda'(auto const&)>(auto&&) const::'lambda'(auto)>&&, std::variant<Fortran::common::Reference<Fortran::parser::AllocateStmt const>, Fortran::common::Reference<Fortran::parser::AssignmentStmt const>, Fortran::common::Reference<Fortran::parser::BackspaceStmt const>, Fortran::common::Reference<Fortran::parser::CallStmt const>, Fortran::common::Reference<Fortran::parser::CloseStmt const>, Fortran::common::Reference<Fortran::parser::ContinueStmt const>, Fortran::common::Reference<Fortran::parser::CycleStmt const>, Fortran::common::Reference<Fortran::parser::DeallocateStmt const>, Fortran::common::Reference<Fortran::parser::EndfileStmt const>, Fortran::common::Reference<Fortran::parser::EventPostStmt const>, Fortran::common::Reference<Fortran::parser::EventWaitStmt const>, Fortran::common::Reference<Fortran::parser::ExitStmt const>, Fortran::common::Reference<Fortran::parser::FailImageStmt const>, Fortran::common::Reference<Fortran::parser::FlushStmt const>, Fortran::common::Reference<Fortran::parser::FormTeamStmt const>, Fortran::common::Reference<Fortran::parser::GotoStmt const>, Fortran::common::Reference<Fortran::parser::IfStmt const>, Fortran::common::Reference<Fortran::parser::InquireStmt const>, Fortran::common::Reference<Fortran::parser::LockStmt const>, Fortran::common::Reference<Fortran::parser::NullifyStmt const>, Fortran::common::Reference<Fortran::parser::OpenStmt const>, Fortran::common::Reference<Fortran::parser::PointerAssignmentStmt const>, Fortran::common::Reference<Fortran::parser::PrintStmt const>, Fortran::common::Reference<Fortran::parser::ReadStmt const>, Fortran::common::Reference<Fortran::parser::ReturnStmt const>, Fortran::common::Reference<Fortran::parser::RewindStmt const>, Fortran::common::Reference<Fortran::parser::StopStmt const>, Fortran::common::Reference<Fortran::parser::SyncAllStmt const>, Fortran::common::Reference<Fortran::parser::SyncImagesStmt const>, Fortran::common::Reference<Fortran::parser::SyncMemoryStmt const>, Fortran::common::Reference<Fortran::parser::SyncTeamStmt const>, Fortran::common::Reference<Fortran::parser::UnlockStmt const>, Fortran::common::Reference<Fortran::parser::WaitStmt const>, Fortran::common::Reference<Fortran::parser::WhereStmt const>, Fortran::common::Reference<Fortran::parser::WriteStmt const>, Fortran::common::Reference<Fortran::parser::ComputedGotoStmt const>, Fortran::common::Reference<Fortran::parser::ForallStmt const>, Fortran::common::Reference<Fortran::parser::ArithmeticIfStmt const>, Fortran::common::Reference<Fortran::parser::AssignStmt const>, Fortran::common::Reference<Fortran::parser::AssignedGotoStmt const>, Fortran::common::Reference<Fortran::parser::PauseStmt const>, Fortran::common::Reference<Fortran::parser::EntryStmt const>, Fortran::common::Reference<Fortran::parser::FormatStmt const>, Fortran::common::Reference<Fortran::parser::AssociateStmt const>, Fortran::common::Reference<Fortran::parser::EndAssociateStmt const>, Fortran::common::Reference<Fortran::parser::BlockStmt const>, Fortran::common::Reference<Fortran::parser::EndBlockStmt const>, Fortran::common::Reference<Fortran::parser::SelectCaseStmt const>, Fortran::common::Reference<Fortran::parser::CaseStmt const>, Fortran::common::Reference<Fortran::parser::EndSelectStmt const>, Fortran::common::Reference<Fortran::parser::ChangeTeamStmt const>, Fortran::common::Reference<Fortran::parser::EndChangeTeamStmt const>, Fortran::common::Reference<Fortran::parser::CriticalStmt const>, Fortran::common::Reference<Fortran::parser::EndCriticalStmt const>, Fortran::common::Reference<Fortran::parser::NonLabelDoStmt const>, Fortran::common::Reference<Fortran::parser::EndDoStmt const>, Fortran::common::Reference<Fortran::parser::IfThenStmt const>, Fortran::common::Reference<Fortran::parser::ElseIfStmt const>, Fortran::common::Reference<Fortran::parser::ElseStmt const>, Fortran::common::Reference<Fortran::parser::EndIfStmt const>, Fortran::common::Reference<Fortran::parser::SelectRankStmt const>, Fortran::common::Reference<Fortran::parser::SelectRankCaseStmt const>, Fortran::common::Reference<Fortran::parser::SelectTypeStmt const>, Fortran::common::Reference<Fortran::parser::TypeGuardStmt const>, Fortran::common::Reference<Fortran::parser::WhereConstructStmt const>, Fortran::common::Reference<Fortran::parser::MaskedElsewhereStmt const>, Fortran::common::Reference<Fortran::parser::ElsewhereStmt const>, Fortran::common::Reference<Fortran::parser::EndWhereStmt const>, Fortran::common::Reference<Fortran::parser::ForallConstructStmt const>, Fortran::common::Reference<Fortran::parser::EndForallStmt const>, Fortran::common::Reference<Fortran::parser::EndProgramStmt const>, Fortran::common::Reference<Fortran::parser::EndFunctionStmt const>, Fortran::common::Reference<Fortran::parser::EndSubroutineStmt const>, Fortran::common::Reference<Fortran::parser::EndMpSubprogramStmt const>, Fortran::common::Reference<Fortran::parser::AssociateConstruct const>, Fortran::common::Reference<Fortran::parser::BlockConstruct const>, Fortran::common::Reference<Fortran::parser::CaseConstruct const>, Fortran::common::Reference<Fortran::parser::ChangeTeamConstruct const>, Fortran::common::Reference<Fortran::parser::CriticalConstruct const>, Fortran::common::Reference<Fortran::parser::DoConstruct const>, Fortran::common::Reference<Fortran::parser::IfConstruct const>, Fortran::common::Reference<Fortran::parser::SelectRankConstruct const>, Fortran::common::Reference<Fortran::parser::SelectTypeConstruct const>, Fortran::common::Reference<Fortran::parser::WhereConstruct const>, Fortran::common::Reference<Fortran::parser::ForallConstruct const>, Fortran::common::Reference<Fortran::parser::CompilerDirective const>, Fortran::common::Reference<Fortran::parser::OpenACCConstruct const>, Fortran::common::Reference<Fortran::parser::OpenACCDeclarativeConstruct const>, Fortran::common::Reference<Fortran::parser::OpenMPConstruct const>, Fortran::common::Reference<Fortran::parser::OpenMPDeclarativeConstruct const>, Fortran::common::Reference<Fortran::parser::OmpEndLoopDirective const>> const&) Bridge.cpp:0:0
#20 0x000055b97c162ba5 (anonymous namespace)::FirConverter::genFIR(Fortran::lower::pft::Evaluation&, bool) Bridge.cpp:0:0
#21 0x000055b97c19171f (anonymous namespace)::FirConverter::lowerFunc(Fortran::lower::pft::FunctionLikeUnit&) Bridge.cpp:0:0
#22 0x000055b97c14485d Fortran::lower::LoweringBridge::lower(Fortran::parser::Program const&, Fortran::semantics::SemanticsContext const&) 
#23 0x000055b97c0ad384 Fortran::frontend::CodeGenAction::beginSourceFileAction()
#24 0x000055b97bf85439 Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&)
#25 0x000055b97bf7da68 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&)
#26 0x000055b97bf88056 Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*)
#27 0x000055b97afd0a54 fc1_main(llvm::ArrayRef<char const*>, char const*) 
#28 0x000055b97afcec02 main
#29 0x00007f805a6f1d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#30 0x00007f805a6f1e40 call_init ./csu/../csu/libc-start.c:128:20
#31 0x00007f805a6f1e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#32 0x000055b97afce065 _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 fc9821a877d4e1443603d67539e4369b3ec72890)
Target: x86_64-unknown-linux-gnu
Thread model: posix
llvmbot commented 1 year ago

@llvm/issue-subscribers-openmp

llvmbot commented 1 year ago

@llvm/issue-subscribers-flang-ir

k-arrows commented 3 months ago

https://github.com/llvm/llvm-project/pull/93927

tblah commented 3 hours ago

This was fixed by the above linked PR. I have verified that the test still works and is run in our gfortran test-suite configuration. Closing.