Thanks to visit codestin.com
Credit goes to github.com

Skip to content

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

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

Open
erichkeane opened this issue Apr 30, 2025 · 2 comments
Open

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

erichkeane opened this issue Apr 30, 2025 · 2 comments
Labels
crash Prefer [crash-on-valid] or [crash-on-invalid] flang:frontend

Comments

@erichkeane
Copy link
Collaborator

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).

@llvmbot llvmbot added the flang Flang issues not falling into any other category label Apr 30, 2025
@erichkeane
Copy link
Collaborator Author

@clementval @razvanlupusoru @klausler

FYI, just found this playing around with godbolt, so figured I'd pass it on.

@EugeneZelenko EugeneZelenko added flang:frontend crash Prefer [crash-on-valid] or [crash-on-invalid] and removed flang Flang issues not falling into any other category labels Apr 30, 2025
@llvmbot
Copy link
Member

llvmbot commented Apr 30, 2025

@llvm/issue-subscribers-flang-frontend

Author: Erich Keane (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).
</details>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
crash Prefer [crash-on-valid] or [crash-on-invalid] flang:frontend
Projects
None yet
Development

No branches or pull requests

3 participants