llvm / llvm-project

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

[Flang][OpenMP] fatal internal error: CHECK(context.location().has_value()) failed at /root/llvm-project/flang/lib/Semantics/expression.cpp(4640) #90337

Open k-arrows opened 2 months ago

k-arrows commented 2 months ago

Reproducible on Godbolt: https://godbolt.org/z/eP4TE7znf

With the flang-new I built today, the failure point is flang/lib/Semantics/expression.cpp(4641).

Reproducer:

$ cat test.f90
!$omp declare reduction(a:integer:omp_out=omp_out+omp_in)
end

Stack dump from Godbolt:

fatal internal error: CHECK(context.location().has_value()) failed at /root/llvm-project/flang/lib/Semantics/expression.cpp(4640)
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-20240418/bin/flang-new -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 /opt/compiler-explorer/clang-llvmflang-trunk-20240418/lib/clang/19 -mframe-pointer=all -o /app/output.s -x f95-cpp-input /app/example.f90
 #0 0x00000000036a9c18 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x36a9c18)
 #1 0x00000000036a758c SignalHandler(int) Signals.cpp:0:0
 #2 0x000077d9b4642520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x000077d9b46969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #4 0x000077d9b4642476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #5 0x000077d9b46287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #6 0x0000000004b1fc69 (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x4b1fc69)
 #7 0x0000000003f1ff96 (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3f1ff96)
 #8 0x0000000003f7c2d0 Fortran::semantics::ScopeHandler::MakeNumericType(Fortran::common::TypeCategory, std::optional<Fortran::parser::KindSelector> const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3f7c2d0)
 #9 0x0000000003fa3a44 std::enable_if<WrapperTrait<Fortran::parser::IntegerTypeSpec>, void>::type Fortran::parser::Walk<Fortran::parser::IntegerTypeSpec, Fortran::semantics::ResolveNamesVisitor>(Fortran::parser::IntegerTypeSpec const&, Fortran::semantics::ResolveNamesVisitor&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fa3a44)
#10 0x0000000003fa3e1c void Fortran::common::log2visit::Log2VisitHelper<0ul, 6ul, void, void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::IntegerTypeSpec, Fortran::parser::IntrinsicTypeSpec::Real, Fortran::parser::IntrinsicTypeSpec::DoublePrecision, Fortran::parser::IntrinsicTypeSpec::Complex, Fortran::parser::IntrinsicTypeSpec::Character, Fortran::parser::IntrinsicTypeSpec::Logical, Fortran::parser::IntrinsicTypeSpec::DoubleComplex>(std::variant<Fortran::parser::IntegerTypeSpec, Fortran::parser::IntrinsicTypeSpec::Real, Fortran::parser::IntrinsicTypeSpec::DoublePrecision, Fortran::parser::IntrinsicTypeSpec::Complex, Fortran::parser::IntrinsicTypeSpec::Character, Fortran::parser::IntrinsicTypeSpec::Logical, Fortran::parser::IntrinsicTypeSpec::DoubleComplex> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&), std::variant<Fortran::parser::IntegerTypeSpec, Fortran::parser::IntrinsicTypeSpec::Real, Fortran::parser::IntrinsicTypeSpec::DoublePrecision, Fortran::parser::IntrinsicTypeSpec::Complex, Fortran::parser::IntrinsicTypeSpec::Character, Fortran::parser::IntrinsicTypeSpec::Logical, Fortran::parser::IntrinsicTypeSpec::DoubleComplex> const&>(void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::IntegerTypeSpec, Fortran::parser::IntrinsicTypeSpec::Real, Fortran::parser::IntrinsicTypeSpec::DoublePrecision, Fortran::parser::IntrinsicTypeSpec::Complex, Fortran::parser::IntrinsicTypeSpec::Character, Fortran::parser::IntrinsicTypeSpec::Logical, Fortran::parser::IntrinsicTypeSpec::DoubleComplex>(std::variant<Fortran::parser::IntegerTypeSpec, Fortran::parser::IntrinsicTypeSpec::Real, Fortran::parser::IntrinsicTypeSpec::DoublePrecision, Fortran::parser::IntrinsicTypeSpec::Complex, Fortran::parser::IntrinsicTypeSpec::Character, Fortran::parser::IntrinsicTypeSpec::Logical, Fortran::parser::IntrinsicTypeSpec::DoubleComplex> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&)&&, unsigned long, std::variant<Fortran::parser::IntegerTypeSpec, Fortran::parser::IntrinsicTypeSpec::Real, Fortran::parser::IntrinsicTypeSpec::DoublePrecision, Fortran::parser::IntrinsicTypeSpec::Complex, Fortran::parser::IntrinsicTypeSpec::Character, Fortran::parser::IntrinsicTypeSpec::Logical, Fortran::parser::IntrinsicTypeSpec::DoubleComplex> const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fa3e1c)
#11 0x0000000003fa425f void Fortran::common::log2visit::Log2VisitHelper<0ul, 6ul, void, void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::IntrinsicTypeSpec, Fortran::parser::DeclarationTypeSpec::Type, Fortran::parser::DeclarationTypeSpec::Class, Fortran::parser::DeclarationTypeSpec::ClassStar, Fortran::parser::DeclarationTypeSpec::TypeStar, Fortran::parser::DeclarationTypeSpec::Record, Fortran::parser::VectorTypeSpec>(std::variant<Fortran::parser::IntrinsicTypeSpec, Fortran::parser::DeclarationTypeSpec::Type, Fortran::parser::DeclarationTypeSpec::Class, Fortran::parser::DeclarationTypeSpec::ClassStar, Fortran::parser::DeclarationTypeSpec::TypeStar, Fortran::parser::DeclarationTypeSpec::Record, Fortran::parser::VectorTypeSpec> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&), std::variant<Fortran::parser::IntrinsicTypeSpec, Fortran::parser::DeclarationTypeSpec::Type, Fortran::parser::DeclarationTypeSpec::Class, Fortran::parser::DeclarationTypeSpec::ClassStar, Fortran::parser::DeclarationTypeSpec::TypeStar, Fortran::parser::DeclarationTypeSpec::Record, Fortran::parser::VectorTypeSpec> const&>(void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::IntrinsicTypeSpec, Fortran::parser::DeclarationTypeSpec::Type, Fortran::parser::DeclarationTypeSpec::Class, Fortran::parser::DeclarationTypeSpec::ClassStar, Fortran::parser::DeclarationTypeSpec::TypeStar, Fortran::parser::DeclarationTypeSpec::Record, Fortran::parser::VectorTypeSpec>(std::variant<Fortran::parser::IntrinsicTypeSpec, Fortran::parser::DeclarationTypeSpec::Type, Fortran::parser::DeclarationTypeSpec::Class, Fortran::parser::DeclarationTypeSpec::ClassStar, Fortran::parser::DeclarationTypeSpec::TypeStar, Fortran::parser::DeclarationTypeSpec::Record, Fortran::parser::VectorTypeSpec> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&)&&, unsigned long, std::variant<Fortran::parser::IntrinsicTypeSpec, Fortran::parser::DeclarationTypeSpec::Type, Fortran::parser::DeclarationTypeSpec::Class, Fortran::parser::DeclarationTypeSpec::ClassStar, Fortran::parser::DeclarationTypeSpec::TypeStar, Fortran::parser::DeclarationTypeSpec::Record, Fortran::parser::VectorTypeSpec> const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fa425f)
#12 0x0000000003fb0397 void Fortran::parser::ForEachInTuple<1ul, void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::Verbatim, Fortran::parser::OmpReductionOperator, std::__cxx11::list<Fortran::parser::DeclarationTypeSpec, std::allocator<Fortran::parser::DeclarationTypeSpec>>, Fortran::parser::OmpReductionCombiner, std::optional<Fortran::parser::OmpReductionInitializerClause>>(std::tuple<Fortran::parser::Verbatim, Fortran::parser::OmpReductionOperator, std::__cxx11::list<Fortran::parser::DeclarationTypeSpec, std::allocator<Fortran::parser::DeclarationTypeSpec>>, Fortran::parser::OmpReductionCombiner, std::optional<Fortran::parser::OmpReductionInitializerClause>> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&), std::tuple<Fortran::parser::Verbatim, Fortran::parser::OmpReductionOperator, std::__cxx11::list<Fortran::parser::DeclarationTypeSpec, std::allocator<Fortran::parser::DeclarationTypeSpec>>, Fortran::parser::OmpReductionCombiner, std::optional<Fortran::parser::OmpReductionInitializerClause>>>(std::tuple<Fortran::parser::Verbatim, Fortran::parser::OmpReductionOperator, std::__cxx11::list<Fortran::parser::DeclarationTypeSpec, std::allocator<Fortran::parser::DeclarationTypeSpec>>, Fortran::parser::OmpReductionCombiner, std::optional<Fortran::parser::OmpReductionInitializerClause>> const&, void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::Verbatim, Fortran::parser::OmpReductionOperator, std::__cxx11::list<Fortran::parser::DeclarationTypeSpec, std::allocator<Fortran::parser::DeclarationTypeSpec>>, Fortran::parser::OmpReductionCombiner, std::optional<Fortran::parser::OmpReductionInitializerClause>>(std::tuple<Fortran::parser::Verbatim, Fortran::parser::OmpReductionOperator, std::__cxx11::list<Fortran::parser::DeclarationTypeSpec, std::allocator<Fortran::parser::DeclarationTypeSpec>>, Fortran::parser::OmpReductionCombiner, std::optional<Fortran::parser::OmpReductionInitializerClause>> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&)) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fb0397)
#13 0x0000000003fbc497 Fortran::semantics::ResolveNamesVisitor::Pre(Fortran::parser::SpecificationPart const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fbc497)
#14 0x0000000003fba599 std::enable_if<TupleTrait<Fortran::parser::SpecificationPart>, void>::type Fortran::parser::Walk<Fortran::parser::SpecificationPart, Fortran::semantics::ResolveNamesVisitor>(Fortran::parser::SpecificationPart const&, Fortran::semantics::ResolveNamesVisitor&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fba599)
#15 0x0000000003fe1434 Fortran::semantics::ResolveNamesVisitor::ResolveSpecificationParts(Fortran::semantics::ProgramTree&) (.part.0) resolve-names.cpp:0:0
#16 0x0000000003fe1ab6 Fortran::semantics::ResolveNamesVisitor::Pre(Fortran::parser::ProgramUnit const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fe1ab6)
#17 0x0000000003fe2fb4 Fortran::semantics::ResolveNames(Fortran::semantics::SemanticsContext&, Fortran::parser::Program const&, Fortran::semantics::Scope&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fe2fb4)
#18 0x000000000403ac21 Fortran::semantics::Semantics::Perform() (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x403ac21)
#19 0x00000000036ee4e7 Fortran::frontend::FrontendAction::runSemanticChecks() (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x36ee4e7)
#20 0x0000000003a18c70 Fortran::frontend::CodeGenAction::beginSourceFileAction() (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3a18c70)
#21 0x00000000036edac5 Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x36edac5)
#22 0x00000000036dd407 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x36dd407)
#23 0x00000000036f3d4d Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x36f3d4d)
#24 0x0000000001e7cfc8 fc1_main(llvm::ArrayRef<char const*>, char const*) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x1e7cfc8)
#25 0x0000000001d6c7dd main (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x1d6c7dd)
#26 0x000077d9b4629d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#27 0x000077d9b4629e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#28 0x0000000001e7bf2e _start (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x1e7bf2e)
flang-new: error: unable to execute command: Aborted (core dumped)
flang-new: error: flang frontend command failed due to signal (use -v to see invocation)
flang-new version 19.0.0git (https://github.com/llvm/llvm-project.git 823eb1a3252dd773f9c4d92093591f1b39ac27d4)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin
llvmbot commented 2 months ago

@llvm/issue-subscribers-flang-frontend

Author: None (k-arrows)

Reproducible on Godbolt: https://godbolt.org/z/eP4TE7znf With the flang-new I built today, the failure point is `flang/lib/Semantics/expression.cpp(4641)`. Reproducer: ```console $ cat test.f90 !$omp declare reduction(a:integer:omp_out=omp_out+omp_in) end ``` Stack dump from Godbolt: ```console fatal internal error: CHECK(context.location().has_value()) failed at /root/llvm-project/flang/lib/Semantics/expression.cpp(4640) 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-20240418/bin/flang-new -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 /opt/compiler-explorer/clang-llvmflang-trunk-20240418/lib/clang/19 -mframe-pointer=all -o /app/output.s -x f95-cpp-input /app/example.f90 #0 0x00000000036a9c18 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x36a9c18) #1 0x00000000036a758c SignalHandler(int) Signals.cpp:0:0 #2 0x000077d9b4642520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520) #3 0x000077d9b46969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc) #4 0x000077d9b4642476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476) #5 0x000077d9b46287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3) #6 0x0000000004b1fc69 (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x4b1fc69) #7 0x0000000003f1ff96 (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3f1ff96) #8 0x0000000003f7c2d0 Fortran::semantics::ScopeHandler::MakeNumericType(Fortran::common::TypeCategory, std::optional<Fortran::parser::KindSelector> const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3f7c2d0) #9 0x0000000003fa3a44 std::enable_if<WrapperTrait<Fortran::parser::IntegerTypeSpec>, void>::type Fortran::parser::Walk<Fortran::parser::IntegerTypeSpec, Fortran::semantics::ResolveNamesVisitor>(Fortran::parser::IntegerTypeSpec const&, Fortran::semantics::ResolveNamesVisitor&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fa3a44) #10 0x0000000003fa3e1c void Fortran::common::log2visit::Log2VisitHelper<0ul, 6ul, void, void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::IntegerTypeSpec, Fortran::parser::IntrinsicTypeSpec::Real, Fortran::parser::IntrinsicTypeSpec::DoublePrecision, Fortran::parser::IntrinsicTypeSpec::Complex, Fortran::parser::IntrinsicTypeSpec::Character, Fortran::parser::IntrinsicTypeSpec::Logical, Fortran::parser::IntrinsicTypeSpec::DoubleComplex>(std::variant<Fortran::parser::IntegerTypeSpec, Fortran::parser::IntrinsicTypeSpec::Real, Fortran::parser::IntrinsicTypeSpec::DoublePrecision, Fortran::parser::IntrinsicTypeSpec::Complex, Fortran::parser::IntrinsicTypeSpec::Character, Fortran::parser::IntrinsicTypeSpec::Logical, Fortran::parser::IntrinsicTypeSpec::DoubleComplex> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&), std::variant<Fortran::parser::IntegerTypeSpec, Fortran::parser::IntrinsicTypeSpec::Real, Fortran::parser::IntrinsicTypeSpec::DoublePrecision, Fortran::parser::IntrinsicTypeSpec::Complex, Fortran::parser::IntrinsicTypeSpec::Character, Fortran::parser::IntrinsicTypeSpec::Logical, Fortran::parser::IntrinsicTypeSpec::DoubleComplex> const&>(void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::IntegerTypeSpec, Fortran::parser::IntrinsicTypeSpec::Real, Fortran::parser::IntrinsicTypeSpec::DoublePrecision, Fortran::parser::IntrinsicTypeSpec::Complex, Fortran::parser::IntrinsicTypeSpec::Character, Fortran::parser::IntrinsicTypeSpec::Logical, Fortran::parser::IntrinsicTypeSpec::DoubleComplex>(std::variant<Fortran::parser::IntegerTypeSpec, Fortran::parser::IntrinsicTypeSpec::Real, Fortran::parser::IntrinsicTypeSpec::DoublePrecision, Fortran::parser::IntrinsicTypeSpec::Complex, Fortran::parser::IntrinsicTypeSpec::Character, Fortran::parser::IntrinsicTypeSpec::Logical, Fortran::parser::IntrinsicTypeSpec::DoubleComplex> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&)&&, unsigned long, std::variant<Fortran::parser::IntegerTypeSpec, Fortran::parser::IntrinsicTypeSpec::Real, Fortran::parser::IntrinsicTypeSpec::DoublePrecision, Fortran::parser::IntrinsicTypeSpec::Complex, Fortran::parser::IntrinsicTypeSpec::Character, Fortran::parser::IntrinsicTypeSpec::Logical, Fortran::parser::IntrinsicTypeSpec::DoubleComplex> const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fa3e1c) #11 0x0000000003fa425f void Fortran::common::log2visit::Log2VisitHelper<0ul, 6ul, void, void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::IntrinsicTypeSpec, Fortran::parser::DeclarationTypeSpec::Type, Fortran::parser::DeclarationTypeSpec::Class, Fortran::parser::DeclarationTypeSpec::ClassStar, Fortran::parser::DeclarationTypeSpec::TypeStar, Fortran::parser::DeclarationTypeSpec::Record, Fortran::parser::VectorTypeSpec>(std::variant<Fortran::parser::IntrinsicTypeSpec, Fortran::parser::DeclarationTypeSpec::Type, Fortran::parser::DeclarationTypeSpec::Class, Fortran::parser::DeclarationTypeSpec::ClassStar, Fortran::parser::DeclarationTypeSpec::TypeStar, Fortran::parser::DeclarationTypeSpec::Record, Fortran::parser::VectorTypeSpec> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&), std::variant<Fortran::parser::IntrinsicTypeSpec, Fortran::parser::DeclarationTypeSpec::Type, Fortran::parser::DeclarationTypeSpec::Class, Fortran::parser::DeclarationTypeSpec::ClassStar, Fortran::parser::DeclarationTypeSpec::TypeStar, Fortran::parser::DeclarationTypeSpec::Record, Fortran::parser::VectorTypeSpec> const&>(void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::IntrinsicTypeSpec, Fortran::parser::DeclarationTypeSpec::Type, Fortran::parser::DeclarationTypeSpec::Class, Fortran::parser::DeclarationTypeSpec::ClassStar, Fortran::parser::DeclarationTypeSpec::TypeStar, Fortran::parser::DeclarationTypeSpec::Record, Fortran::parser::VectorTypeSpec>(std::variant<Fortran::parser::IntrinsicTypeSpec, Fortran::parser::DeclarationTypeSpec::Type, Fortran::parser::DeclarationTypeSpec::Class, Fortran::parser::DeclarationTypeSpec::ClassStar, Fortran::parser::DeclarationTypeSpec::TypeStar, Fortran::parser::DeclarationTypeSpec::Record, Fortran::parser::VectorTypeSpec> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&)&&, unsigned long, std::variant<Fortran::parser::IntrinsicTypeSpec, Fortran::parser::DeclarationTypeSpec::Type, Fortran::parser::DeclarationTypeSpec::Class, Fortran::parser::DeclarationTypeSpec::ClassStar, Fortran::parser::DeclarationTypeSpec::TypeStar, Fortran::parser::DeclarationTypeSpec::Record, Fortran::parser::VectorTypeSpec> const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fa425f) #12 0x0000000003fb0397 void Fortran::parser::ForEachInTuple<1ul, void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::Verbatim, Fortran::parser::OmpReductionOperator, std::__cxx11::list<Fortran::parser::DeclarationTypeSpec, std::allocator<Fortran::parser::DeclarationTypeSpec>>, Fortran::parser::OmpReductionCombiner, std::optional<Fortran::parser::OmpReductionInitializerClause>>(std::tuple<Fortran::parser::Verbatim, Fortran::parser::OmpReductionOperator, std::__cxx11::list<Fortran::parser::DeclarationTypeSpec, std::allocator<Fortran::parser::DeclarationTypeSpec>>, Fortran::parser::OmpReductionCombiner, std::optional<Fortran::parser::OmpReductionInitializerClause>> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&), std::tuple<Fortran::parser::Verbatim, Fortran::parser::OmpReductionOperator, std::__cxx11::list<Fortran::parser::DeclarationTypeSpec, std::allocator<Fortran::parser::DeclarationTypeSpec>>, Fortran::parser::OmpReductionCombiner, std::optional<Fortran::parser::OmpReductionInitializerClause>>>(std::tuple<Fortran::parser::Verbatim, Fortran::parser::OmpReductionOperator, std::__cxx11::list<Fortran::parser::DeclarationTypeSpec, std::allocator<Fortran::parser::DeclarationTypeSpec>>, Fortran::parser::OmpReductionCombiner, std::optional<Fortran::parser::OmpReductionInitializerClause>> const&, void Fortran::parser::Walk<Fortran::semantics::ResolveNamesVisitor, Fortran::parser::Verbatim, Fortran::parser::OmpReductionOperator, std::__cxx11::list<Fortran::parser::DeclarationTypeSpec, std::allocator<Fortran::parser::DeclarationTypeSpec>>, Fortran::parser::OmpReductionCombiner, std::optional<Fortran::parser::OmpReductionInitializerClause>>(std::tuple<Fortran::parser::Verbatim, Fortran::parser::OmpReductionOperator, std::__cxx11::list<Fortran::parser::DeclarationTypeSpec, std::allocator<Fortran::parser::DeclarationTypeSpec>>, Fortran::parser::OmpReductionCombiner, std::optional<Fortran::parser::OmpReductionInitializerClause>> const&, Fortran::semantics::ResolveNamesVisitor&)::'lambda'(Fortran::semantics::ResolveNamesVisitor const&)) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fb0397) #13 0x0000000003fbc497 Fortran::semantics::ResolveNamesVisitor::Pre(Fortran::parser::SpecificationPart const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fbc497) #14 0x0000000003fba599 std::enable_if<TupleTrait<Fortran::parser::SpecificationPart>, void>::type Fortran::parser::Walk<Fortran::parser::SpecificationPart, Fortran::semantics::ResolveNamesVisitor>(Fortran::parser::SpecificationPart const&, Fortran::semantics::ResolveNamesVisitor&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fba599) #15 0x0000000003fe1434 Fortran::semantics::ResolveNamesVisitor::ResolveSpecificationParts(Fortran::semantics::ProgramTree&) (.part.0) resolve-names.cpp:0:0 #16 0x0000000003fe1ab6 Fortran::semantics::ResolveNamesVisitor::Pre(Fortran::parser::ProgramUnit const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fe1ab6) #17 0x0000000003fe2fb4 Fortran::semantics::ResolveNames(Fortran::semantics::SemanticsContext&, Fortran::parser::Program const&, Fortran::semantics::Scope&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3fe2fb4) #18 0x000000000403ac21 Fortran::semantics::Semantics::Perform() (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x403ac21) #19 0x00000000036ee4e7 Fortran::frontend::FrontendAction::runSemanticChecks() (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x36ee4e7) #20 0x0000000003a18c70 Fortran::frontend::CodeGenAction::beginSourceFileAction() (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x3a18c70) #21 0x00000000036edac5 Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x36edac5) #22 0x00000000036dd407 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x36dd407) #23 0x00000000036f3d4d Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x36f3d4d) #24 0x0000000001e7cfc8 fc1_main(llvm::ArrayRef<char const*>, char const*) (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x1e7cfc8) #25 0x0000000001d6c7dd main (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x1d6c7dd) #26 0x000077d9b4629d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90) #27 0x000077d9b4629e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40) #28 0x0000000001e7bf2e _start (/opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin/flang-new+0x1e7bf2e) flang-new: error: unable to execute command: Aborted (core dumped) flang-new: error: flang frontend command failed due to signal (use -v to see invocation) flang-new version 19.0.0git (https://github.com/llvm/llvm-project.git 823eb1a3252dd773f9c4d92093591f1b39ac27d4) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /opt/compiler-explorer/clang-llvmflang-trunk-20240418/bin ```
clementval commented 2 months ago

I'm curious what is that supposed to do?

k-arrows commented 2 months ago

The reproducer here is reduced and modified from the following: https://github.com/gcc-mirror/gcc/blob/master/gcc/testsuite/gfortran.dg/gomp/openmp-simd-1.f90