Skip to content

[Flang][OpenACC] collapse Associated Loop checking asserts: #138013

Open
@erichkeane

Description

@erichkeane

https://godbolt.org/z/b3Y4oGsxd

! Type your code here, or load an example.
integer function square(x)
    implicit none
    integer, intent(in) :: x
    integer :: n, n2
    !$acc loop collapse(2) device_type(nvidia)
    do n = 1, x

    end do
    square = x * x
end function square

Asserts:

fatal internal error: CHECK(level == 0) failed at /root/llvm-project/flang/lib/Semantics/resolve-directives.cpp(1388)
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.	Program arguments: /opt/compiler-explorer/clang-llvmflang-trunk/bin/flang -fc1 -emit-fir -fopenacc -o /app/output.s <source>
 #0 0x0000000003db85f8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x3db85f8)
 #1 0x0000000003db61b4 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #2 0x000076b92b642520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x000076b92b6969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #4 0x000076b92b642476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #5 0x000076b92b6287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #6 0x0000000005aafe89 (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x5aafe89)
 #7 0x0000000004c2c030 Fortran::semantics::AccAttributeVisitor::CheckAssociatedLoop(Fortran::parser::DoConstruct const&) (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x4c2c030)
 #8 0x0000000004c2c1f1 Fortran::semantics::AccAttributeVisitor::Pre(Fortran::parser::OpenACCLoopConstruct const&) (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x4c2c1f1)
 #9 0x0000000004c556c8 void Fortran::common::log2visit::Log2VisitHelper<0ul, 7ul, void, void Fortran::parser::detail::ParseTreeVisitorLookupScope::Walk<Fortran::semantics::AccAttributeVisitor, Fortran::parser::OpenACCBlockConstruct, Fortran::parser::OpenACCCombinedConstruct, Fortran::parser::OpenACCLoopConstruct, Fortran::parser::OpenACCStandaloneConstruct, Fortran::parser::OpenACCCacheConstruct, Fortran::parser::OpenACCWaitConstruct, Fortran::parser::OpenACCAtomicConstruct, Fortran::parser::OpenACCEndConstruct>(std::variant<Fortran::parser::OpenACCBlockConstruct, Fortran::parser::OpenACCCombinedConstruct, Fortran::parser::OpenACCLoopConstruct, Fortran::parser::OpenACCStandaloneConstruct, Fortran::parser::OpenACCCacheConstruct, Fortran::parser::OpenACCWaitConstruct, Fortran::parser::OpenACCAtomicConstruct, Fortran::parser::OpenACCEndConstruct> const&, Fortran::semantics::AccAttributeVisitor&)::'lambda'(Fortran::semantics::AccAttributeVisitor const&), std::variant<Fortran::parser::OpenACCBlockConstruct, Fortran::parser::OpenACCCombinedConstruct, Fortran::parser::OpenACCLoopConstruct, Fortran::parser::OpenACCStandaloneConstruct, Fortran::parser::OpenACCCacheConstruct, Fortran::parser::OpenACCWaitConstruct, Fortran::parser::OpenACCAtomicConstruct, Fortran::parser::OpenACCEndConstruct> const&>(void Fortran::parser::detail::ParseTreeVisitorLookupScope::Walk<Fortran::semantics::AccAttributeVisitor, Fortran::parser::OpenACCBlockConstruct, Fortran::parser::OpenACCCombinedConstruct, Fortran::parser::OpenACCLoopConstruct, Fortran::parser::OpenACCStandaloneConstruct, Fortran::parser::OpenACCCacheConstruct, Fortran::parser::OpenACCWaitConstruct, Fortran::parser::OpenACCAtomicConstruct, Fortran::parser::OpenACCEndConstruct>(std::variant<Fortran::parser::OpenACCBlockConstruct, Fortran::parser::OpenACCCombinedConstruct, Fortran::parser::OpenACCLoopConstruct, Fortran::parser::OpenACCStandaloneConstruct, Fortran::parser::OpenACCCacheConstruct, Fortran::parser::OpenACCWaitConstruct, Fortran::parser::OpenACCAtomicConstruct, Fortran::parser::OpenACCEndConstruct> const&, Fortran::semantics::AccAttributeVisitor&)::'lambda'(Fortran::semantics::AccAttributeVisitor const&)&&, unsigned long, std::variant<Fortran::parser::OpenACCBlockConstruct, Fortran::parser::OpenACCCombinedConstruct, Fortran::parser::OpenACCLoopConstruct, Fortran::parser::OpenACCStandaloneConstruct, Fortran::parser::OpenACCCacheConstruct, Fortran::parser::OpenACCWaitConstruct, Fortran::parser::OpenACCAtomicConstruct, Fortran::parser::OpenACCEndConstruct> const&) (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x4c556c8)
#10 0x0000000004c537a6 void Fortran::parser::detail::ParseTreeVisitorLookupScope::Walk<Fortran::semantics::AccAttributeVisitor>(std::__cxx11::list<Fortran::parser::ExecutionPartConstruct, std::allocator<Fortran::parser::ExecutionPartConstruct>> const&, Fortran::semantics::AccAttributeVisitor&) (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x4c537a6)
#11 0x0000000004c56588 void Fortran::parser::detail::ParseTreeVisitorLookupScope::Walk<Fortran::semantics::AccAttributeVisitor, Fortran::parser::Statement<Fortran::parser::FunctionStmt>, Fortran::parser::SpecificationPart, Fortran::parser::ExecutionPart, std::optional<Fortran::parser::InternalSubprogramPart>, Fortran::parser::Statement<Fortran::parser::EndFunctionStmt>>(std::tuple<Fortran::parser::Statement<Fortran::parser::FunctionStmt>, Fortran::parser::SpecificationPart, Fortran::parser::ExecutionPart, std::optional<Fortran::parser::InternalSubprogramPart>, Fortran::parser::Statement<Fortran::parser::EndFunctionStmt>> const&, Fortran::semantics::AccAttributeVisitor&) (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x4c56588)
#12 0x0000000004c57280 Fortran::semantics::ResolveAccParts(Fortran::semantics::SemanticsContext&, Fortran::parser::ProgramUnit const&, Fortran::semantics::Scope*) (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x4c57280)
#13 0x00000000048c156b Fortran::semantics::ResolveNamesVisitor::Pre(Fortran::parser::ProgramUnit const&) (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x48c156b)
#14 0x00000000048c2ac1 Fortran::semantics::ResolveNames(Fortran::semantics::SemanticsContext&, Fortran::parser::Program const&, Fortran::semantics::Scope&) (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x48c2ac1)
#15 0x000000000492fc56 Fortran::semantics::Semantics::Perform() (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x492fc56)
#16 0x0000000003e10e7d Fortran::frontend::FrontendAction::runSemanticChecks() (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x3e10e7d)
#17 0x00000000040c0630 Fortran::frontend::CodeGenAction::beginSourceFileAction() (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x40c0630)
#18 0x0000000003e0fb25 Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&) (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x3e0fb25)
#19 0x0000000003dfe5e7 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x3dfe5e7)
#20 0x0000000003e19913 Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x3e19913)
#21 0x000000000219108e fc1_main(llvm::ArrayRef<char const*>, char const*) (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x219108e)
#22 0x000000000205871f main (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x205871f)
#23 0x000076b92b629d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#24 0x000076b92b629e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#25 0x000000000218f9b5 _start (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x218f9b5)
Program terminated with signal: SIGSEGV
Compiler returned: 139

I note that tile doesn't crash, but I believe is supposed to be ill-formed (as is this one).

Metadata

Metadata

Assignees

No one assigned

    Labels

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

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions