-
Notifications
You must be signed in to change notification settings - Fork 15.1k
Open
Description
Reproducer:
https://godbolt.org/z/Ph7ffG7xY
!$omp atomic capture
i = j(1)
j(1) = i
!$omp end atomic
endBacktrace:
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and instructions to reproduce the bug.
Stack dump:
0. Program arguments: /cefs/d5/d56bea4d1793acd7b130b623_clang-llvmflang-trunk-20250911/bin/flang -fc1 -triple x86_64-unknown-linux-gnu -S -mrelocation-model pic -pic-level 2 -pic-is-pie -target-cpu x86-64 -mllvm -x86-asm-syntax=intel -fopenmp -resource-dir /cefs/d5/d56bea4d1793acd7b130b623_clang-llvmflang-trunk-20250911/lib/clang/22 -mframe-pointer=all -o /app/output.s -x f95 /app/example.f90
#0 0x00000000041f91f8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/cefs/d5/d56bea4d1793acd7b130b623_clang-llvmflang-trunk-20250911/bin/flang+0x41f91f8)
#1 0x00000000041f63c4 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#2 0x000073b2e3a42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#3 0x0000000004fdcb9e Fortran::semantics::OmpStructureChecker::CheckAtomicVariable(Fortran::evaluate::Expr<Fortran::evaluate::SomeType> const&, Fortran::parser::CharBlock) (/cefs/d5/d56bea4d1793acd7b130b623_clang-llvmflang-trunk-20250911/bin/flang+0x4fdcb9e)
#4 0x0000000004fde92d Fortran::semantics::OmpStructureChecker::CheckAtomicWriteAssignment(Fortran::evaluate::Assignment const&, Fortran::parser::CharBlock) (/cefs/d5/d56bea4d1793acd7b130b623_clang-llvmflang-trunk-20250911/bin/flang+0x4fde92d)
#5 0x000000000532e015 Fortran::semantics::OmpStructureChecker::CheckAtomicUpdateCapture(Fortran::parser::OpenMPAtomicConstruct const&, std::__cxx11::list<Fortran::parser::ExecutionPartConstruct, std::allocator<Fortran::parser::ExecutionPartConstruct>> const&, Fortran::parser::CharBlock) (/cefs/d5/d56bea4d1793acd7b130b623_clang-llvmflang-trunk-20250911/bin/flang+0x532e015)
#6 0x000000000532ef4b Fortran::semantics::OmpStructureChecker::Enter(Fortran::parser::OpenMPAtomicConstruct const&) (/cefs/d5/d56bea4d1793acd7b130b623_clang-llvmflang-trunk-20250911/bin/flang+0x532ef4b)
#7 0x0000000004d6c325 void Fortran::common::log2visit::Log2VisitHelper<0ul, 6ul, void, void Fortran::parser::detail::ParseTreeVisitorLookupScope::Walk<Fortran::semantics::SemanticsVisitor<Fortran::semantics::OmpStructureChecker>, Fortran::parser::OpenMPStandaloneConstruct, Fortran::parser::OpenMPSectionsConstruct, Fortran::parser::OpenMPSectionConstruct, Fortran::parser::OpenMPLoopConstruct, Fortran::parser::OmpBlockConstruct, Fortran::parser::OpenMPAtomicConstruct, Fortran::parser::OpenMPDeclarativeAllocate, Fortran::parser::OpenMPDispatchConstruct, Fortran::parser::OpenMPUtilityConstruct, Fortran::parser::OpenMPExecutableAllocate, Fortran::parser::OpenMPAllocatorsConstruct, Fortran::parser::OpenMPAssumeConstruct, Fortran::parser::OpenMPCriticalConstruct>(std::variant<Fortran::parser::OpenMPStandaloneConstruct, Fortran::parser::OpenMPSectionsConstruct, Fortran::parser::OpenMPSectionConstruct, Fortran::parser::OpenMPLoopConstruct, Fortran::parser::OmpBlockConstruct, Fortran::parser::OpenMPAtomicConstruct, Fortran::parser::OpenMPDeclarativeAllocate, Fortran::parser::OpenMPDispatchConstruct, Fortran::parser::OpenMPUtilityConstruct, Fortran::parser::OpenMPExecutableAllocate, Fortran::parser::OpenMPAllocatorsConstruct, Fortran::parser::OpenMPAssumeConstruct, Fortran::parser::OpenMPCriticalConstruct> const&, Fortran::semantics::SemanticsVisitor<Fortran::semantics::OmpStructureChecker>&)::'lambda'(Fortran::semantics::SemanticsVisitor<Fortran::semantics::OmpStructureChecker> const&), std::variant<Fortran::parser::OpenMPStandaloneConstruct, Fortran::parser::OpenMPSectionsConstruct, Fortran::parser::OpenMPSectionConstruct, Fortran::parser::OpenMPLoopConstruct, Fortran::parser::OmpBlockConstruct, Fortran::parser::OpenMPAtomicConstruct, Fortran::parser::OpenMPDeclarativeAllocate, Fortran::parser::OpenMPDispatchConstruct, Fortran::parser::OpenMPUtilityConstruct, Fortran::parser::OpenMPExecutableAllocate, Fortran::parser::OpenMPAllocatorsConstruct, Fortran::parser::OpenMPAssumeConstruct, Fortran::parser::OpenMPCriticalConstruct> const&>(void Fortran::parser::detail::ParseTreeVisitorLookupScope::Walk<Fortran::semantics::SemanticsVisitor<Fortran::semantics::OmpStructureChecker>, Fortran::parser::OpenMPStandaloneConstruct, Fortran::parser::OpenMPSectionsConstruct, Fortran::parser::OpenMPSectionConstruct, Fortran::parser::OpenMPLoopConstruct, Fortran::parser::OmpBlockConstruct, Fortran::parser::OpenMPAtomicConstruct, Fortran::parser::OpenMPDeclarativeAllocate, Fortran::parser::OpenMPDispatchConstruct, Fortran::parser::OpenMPUtilityConstruct, Fortran::parser::OpenMPExecutableAllocate, Fortran::parser::OpenMPAllocatorsConstruct, Fortran::parser::OpenMPAssumeConstruct, Fortran::parser::OpenMPCriticalConstruct>(std::variant<Fortran::parser::OpenMPStandaloneConstruct, Fortran::parser::OpenMPSectionsConstruct, Fortran::parser::OpenMPSectionConstruct, Fortran::parser::OpenMPLoopConstruct, Fortran::parser::OmpBlockConstruct, Fortran::parser::OpenMPAtomicConstruct, Fortran::parser::OpenMPDeclarativeAllocate, Fortran::parser::OpenMPDispatchConstruct, Fortran::parser::OpenMPUtilityConstruct, Fortran::parser::OpenMPExecutableAllocate, Fortran::parser::OpenMPAllocatorsConstruct, Fortran::parser::OpenMPAssumeConstruct, Fortran::parser::OpenMPCriticalConstruct> const&, Fortran::semantics::SemanticsVisitor<Fortran::semantics::OmpStructureChecker>&)::'lambda'(Fortran::semantics::SemanticsVisitor<Fortran::semantics::OmpStructureChecker> const&)&&, unsigned long, std::variant<Fortran::parser::OpenMPStandaloneConstruct, Fortran::parser::OpenMPSectionsConstruct, Fortran::parser::OpenMPSectionConstruct, Fortran::parser::OpenMPLoopConstruct, Fortran::parser::OmpBlockConstruct, Fortran::parser::OpenMPAtomicConstruct, Fortran::parser::OpenMPDeclarativeAllocate, Fortran::parser::OpenMPDispatchConstruct, Fortran::parser::OpenMPUtilityConstruct, Fortran::parser::OpenMPExecutableAllocate, Fortran::parser::OpenMPAllocatorsConstruct, Fortran::parser::OpenMPAssumeConstruct, Fortran::parser::OpenMPCriticalConstruct> const&) (/cefs/d5/d56bea4d1793acd7b130b623_clang-llvmflang-trunk-20250911/bin/flang+0x4d6c325)
#8 0x0000000004d6c628 std::enable_if<UnionTrait<Fortran::parser::OpenMPConstruct>, void>::type Fortran::parser::detail::ParseTreeVisitorLookupScope::Walk<Fortran::parser::OpenMPConstruct, Fortran::semantics::SemanticsVisitor<Fortran::semantics::OmpStructureChecker>>(Fortran::parser::OpenMPConstruct const&, Fortran::semantics::SemanticsVisitor<Fortran::semantics::OmpStructureChecker>&) (/cefs/d5/d56bea4d1793acd7b130b623_clang-llvmflang-trunk-20250911/bin/flang+0x4d6c628)
#9 0x0000000004d6acd8 void Fortran::parser::detail::ParseTreeVisitorLookupScope::Walk<Fortran::semantics::SemanticsVisitor<Fortran::semantics::OmpStructureChecker>>(std::__cxx11::list<Fortran::parser::ExecutionPartConstruct, std::allocator<Fortran::parser::ExecutionPartConstruct>> const&, Fortran::semantics::SemanticsVisitor<Fortran::semantics::OmpStructureChecker>&) (/cefs/d5/d56bea4d1793acd7b130b623_clang-llvmflang-trunk-20250911/bin/flang+0x4d6acd8)
#10 0x0000000004d6e6ec void Fortran::common::log2visit::Log2VisitHelper<0ul, 7ul, void, void Fortran::parser::detail::ParseTreeVisitorLookupScope::Walk<Fortran::semantics::SemanticsVisitor<Fortran::semantics::OmpStructureChecker>, Fortran::common::Indirection<Fortran::parser::MainProgram, false>, Fortran::common::Indirection<Fortran::parser::FunctionSubprogram, false>, Fortran::common::Indirection<Fortran::parser::SubroutineSubprogram, false>, Fortran::common::Indirection<Fortran::parser::Module, false>, Fortran::common::Indirection<Fortran::parser::Submodule, false>, Fortran::common::Indirection<Fortran::parser::BlockData, false>, Fortran::common::Indirection<Fortran::parser::CompilerDirective, false>, Fortran::common::Indirection<Fortran::parser::OpenACCRoutineConstruct, false>>(std::variant<Fortran::common::Indirection<Fortran::parser::MainProgram, false>, Fortran::common::Indirection<Fortran::parser::FunctionSubprogram, false>, Fortran::common::Indirection<Fortran::parser::SubroutineSubprogram, false>, Fortran::common::Indirection<Fortran::parser::Module, false>, Fortran::common::Indirection<Fortran::parser::Submodule, false>, Fortran::common::Indirection<Fortran::parser::BlockData, false>, Fortran::common::Indirection<Fortran::parser::CompilerDirective, false>, Fortran::common::Indirection<Fortran::parser::OpenACCRoutineConstruct, false>> const&, Fortran::semantics::SemanticsVisitor<Fortran::semantics::OmpStructureChecker>&)::'lambda'(Fortran::semantics::SemanticsVisitor<Fortran::semantics::OmpStructureChecker> const&), std::variant<Fortran::common::Indirection<Fortran::parser::MainProgram, false>, Fortran::common::Indirection<Fortran::parser::FunctionSubprogram, false>, Fortran::common::Indirection<Fortran::parser::SubroutineSubprogram, false>, Fortran::common::Indirection<Fortran::parser::Module, false>, Fortran::common::Indirection<Fortran::parser::Submodule, false>, Fortran::common::Indirection<Fortran::parser::BlockData, false>, Fortran::common::Indirection<Fortran::parser::CompilerDirective, false>, Fortran::common::Indirection<Fortran::parser::OpenACCRoutineConstruct, false>> const&>(void Fortran::parser::detail::ParseTreeVisitorLookupScope::Walk<Fortran::semantics::SemanticsVisitor<Fortran::semantics::OmpStructureChecker>, Fortran::common::Indirection<Fortran::parser::MainProgram, false>, Fortran::common::Indirection<Fortran::parser::FunctionSubprogram, false>, Fortran::common::Indirection<Fortran::parser::SubroutineSubprogram, false>, Fortran::common::Indirection<Fortran::parser::Module, false>, Fortran::common::Indirection<Fortran::parser::Submodule, false>, Fortran::common::Indirection<Fortran::parser::BlockData, false>, Fortran::common::Indirection<Fortran::parser::CompilerDirective, false>, Fortran::common::Indirection<Fortran::parser::OpenACCRoutineConstruct, false>>(std::variant<Fortran::common::Indirection<Fortran::parser::MainProgram, false>, Fortran::common::Indirection<Fortran::parser::FunctionSubprogram, false>, Fortran::common::Indirection<Fortran::parser::SubroutineSubprogram, false>, Fortran::common::Indirection<Fortran::parser::Module, false>, Fortran::common::Indirection<Fortran::parser::Submodule, false>, Fortran::common::Indirection<Fortran::parser::BlockData, false>, Fortran::common::Indirection<Fortran::parser::CompilerDirective, false>, Fortran::common::Indirection<Fortran::parser::OpenACCRoutineConstruct, false>> const&, Fortran::semantics::SemanticsVisitor<Fortran::semantics::OmpStructureChecker>&)::'lambda'(Fortran::semantics::SemanticsVisitor<Fortran::semantics::OmpStructureChecker> const&)&&, unsigned long, std::variant<Fortran::common::Indirection<Fortran::parser::MainProgram, false>, Fortran::common::Indirection<Fortran::parser::FunctionSubprogram, false>, Fortran::common::Indirection<Fortran::parser::SubroutineSubprogram, false>, Fortran::common::Indirection<Fortran::parser::Module, false>, Fortran::common::Indirection<Fortran::parser::Submodule, false>, Fortran::common::Indirection<Fortran::parser::BlockData, false>, Fortran::common::Indirection<Fortran::parser::CompilerDirective, false>, Fortran::common::Indirection<Fortran::parser::OpenACCRoutineConstruct, false>> const&) (/cefs/d5/d56bea4d1793acd7b130b623_clang-llvmflang-trunk-20250911/bin/flang+0x4d6e6ec)
#11 0x0000000004d76688 Fortran::semantics::Semantics::Perform() (/cefs/d5/d56bea4d1793acd7b130b623_clang-llvmflang-trunk-20250911/bin/flang+0x4d76688)
#12 0x0000000004255a48 Fortran::frontend::FrontendAction::runSemanticChecks() (/cefs/d5/d56bea4d1793acd7b130b623_clang-llvmflang-trunk-20250911/bin/flang+0x4255a48)
#13 0x00000000044fe390 Fortran::frontend::CodeGenAction::beginSourceFileAction() (/cefs/d5/d56bea4d1793acd7b130b623_clang-llvmflang-trunk-20250911/bin/flang+0x44fe390)
#14 0x00000000042546a5 Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&) (/cefs/d5/d56bea4d1793acd7b130b623_clang-llvmflang-trunk-20250911/bin/flang+0x42546a5)
#15 0x000000000424252f Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) (/cefs/d5/d56bea4d1793acd7b130b623_clang-llvmflang-trunk-20250911/bin/flang+0x424252f)
#16 0x000000000425e04b Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) (/cefs/d5/d56bea4d1793acd7b130b623_clang-llvmflang-trunk-20250911/bin/flang+0x425e04b)
#17 0x00000000025715d2 fc1_main(llvm::ArrayRef<char const*>, char const*) (/cefs/d5/d56bea4d1793acd7b130b623_clang-llvmflang-trunk-20250911/bin/flang+0x25715d2)
#18 0x0000000002408d91 main (/cefs/d5/d56bea4d1793acd7b130b623_clang-llvmflang-trunk-20250911/bin/flang+0x2408d91)
#19 0x000073b2e3a29d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#20 0x000073b2e3a29e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#21 0x000000000256ffc5 _start (/cefs/d5/d56bea4d1793acd7b130b623_clang-llvmflang-trunk-20250911/bin/flang+0x256ffc5)
flang-22: error: unable to execute command: Segmentation fault (core dumped)
flang-22: error: flang frontend command failed due to signal (use -v to see invocation)
flang version 22.0.0git (https://github.com/llvm/llvm-project.git 4eadb45f83cef00165055f8038f179ca5c3e88ef)
Target: x86_64-unknown-linux-gnu
Thread model: posix