Issue 81097
Summary [Flang] Compilation error of a DATA-stmt-like initialization for a component of a derived type
Labels flang:frontend, crash
Assignees
Reporter yus3710-fj
    This is an issue from Fujitsu testsuite.

Flang-new terminates abnormally when compiling a DATA-stmt-like initialization for a component of a derived type.
This is not Fortran standard, but the following statement exists in [Extensions.md](https://github.com/llvm/llvm-project/blob/main/flang/docs/Extensions.md).

> * Initialization in type declaration statements using `/values/`

I'm not sure this includes the case of a component of a derived type, but flang-new should emit a correct error message if this shouldn't be accepted.

The following are the test program and the compilation results of Flang-new and gfortran.

```fortran
! test.f90
integer i/1/ ! flang-new, gfortran, ifort and Fujitsu compiler accept this
type tag31
  integer i/1/ ! only Fujitsu compiler accepts this
end type
end
```
```console
$ flang-new -v test.f90 
flang-new version 18.0.0git (https://github.com/llvm/llvm-project.git 61ff9f8db8d18002767ea27f83a4bfb8ed47f255)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /path/to/install/bin
Found candidate GCC installation: /opt/rh/gcc-toolset-12/root/usr/lib/gcc/aarch64-redhat-linux/12
Selected GCC installation: /opt/rh/gcc-toolset-12/root/usr/lib/gcc/aarch64-redhat-linux/12
Candidate multilib: .;@m64
Selected multilib: .;@m64
 "/path/to/install/bin/flang-new" -fc1 -triple aarch64-unknown-linux-gnu -emit-obj -fcolor-diagnostics -mrelocation-model pic -pic-level 2 -pic-is-pie -target-cpu generic -target-feature +v8a -target-feature +fp-armv8 -target-feature +neon -mframe-pointer=non-leaf -o /tmp/test-a5f676.o -x f95-cpp-input test.f90

fatal internal error: CHECK(exprAnalyzer_.context().AnyFatalError()) failed at /path/to/llvm-project/flang/lib/Semantics/data-to-inits.cpp(375)
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /path/to/install/bin/flang-new -fc1 -triple aarch64-unknown-linux-gnu -emit-obj -fcolor-diagnostics -mrelocation-model pic -pic-level 2 -pic-is-pie -target-cpu generic -target-feature +v8a -target-feature +fp-armv8 -target-feature +neon -mframe-pointer=non-leaf -o /tmp/test-a5f676.o -x f95-cpp-input test.f90
 #0 0x0000ffffa5276dc0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/path/to/install/lib/libLLVMSupport.so.19git+0x1a6dc0)
 #1 0x0000ffffa5274cf0 llvm::sys::RunSignalHandlers() (/path/to/install/lib/libLLVMSupport.so.19git+0x1a4cf0)
 #2 0x0000ffffa5274e74 SignalHandler(int) Signals.cpp:0:0
 #3 0x0000ffffa7c107a0 (linux-vdso.so.1+0x7a0)
 #4 0x0000ffffa4cc6274 raise (/lib64/libc.so.6+0x36274)
 #5 0x0000ffffa4cb0a2c abort (/lib64/libc.so.6+0x20a2c)
 #6 0x0000ffff9c1c241c (/path/to/install/lib/libFortranCommon.so.19git+0x241c)
 #7 0x0000ffff9ff3934c Fortran::semantics::DataInitializationCompiler<Fortran::common::Indirection<Fortran::parser::DataStmtValue, false>>::InitElement(Fortran::evaluate::OffsetSymbol const&, Fortran::evaluate::Expr<Fortran::evaluate::SomeType> const&) (/path/to/install/lib/libFortranSemantics.so.19git+0x1f6934c)
 #8 0x0000ffff9ff39c5c Fortran::semantics::DataInitializationCompiler<Fortran::common::Indirection<Fortran::parser::DataStmtValue, false>>::InitDesignator(Fortran::evaluate::Expr<Fortran::evaluate::SomeType> const&) (/path/to/install/lib/libFortranSemantics.so.19git+0x1f69c5c)
 #9 0x0000ffff9ff39ebc Fortran::semantics::AccumulateDataInitializations(std::map<Fortran::semantics::Symbol const*, Fortran::semantics::SymbolDataInitialization, std::less<Fortran::semantics::Symbol const*>, std::allocator<std::pair<Fortran::semantics::Symbol const* const, Fortran::semantics::SymbolDataInitialization>>>&, Fortran::evaluate::ExpressionAnalyzer&, Fortran::semantics::Symbol const&, std::__cxx11::list<Fortran::common::Indirection<Fortran::parser::DataStmtValue, false>, std::allocator<Fortran::common::Indirection<Fortran::parser::DataStmtValue, false>>> const&) (/path/to/install/lib/libFortranSemantics.so.19git+0x1f69ebc)
#10 ... (/path/to/install/lib/libFortranSemantics.so.19git+0x2125068)
#11 ... (/path/to/install/lib/libFortranSemantics.so.19git+0x2126568)
#12 ... (/path/to/install/lib/libFortranSemantics.so.19git+0x215ae68)
#13 ... (/path/to/install/lib/libFortranSemantics.so.19git+0x215b12c)
#14 ... (/path/to/install/lib/libFortranSemantics.so.19git+0x215b278)
#15 ... (/path/to/install/lib/libFortranSemantics.so.19git+0x2117c1c)
#16 ... (/path/to/install/lib/libFortranSemantics.so.19git+0x2147768)
#17 ... (/path/to/install/lib/libFortranSemantics.so.19git+0x21478ec)
#18 0x0000ffffa011837c void Fortran::parser::ForEachInTuple<0ul, void Fortran::parser::Walk<Fortran::semantics::SemanticsVisitor<Fortran::semantics::AllocateChecker, Fortran::semantics::ArithmeticIfStmtChecker, Fortran::semantics::AssignmentChecker, Fortran::semantics::CaseChecker, Fortran::semantics::CoarrayChecker, Fortran::semantics::DataChecker, Fortran::semantics::DeallocateChecker, Fortran::semantics::DoForallChecker, Fortran::semantics::IfStmtChecker, Fortran::semantics::IoChecker, Fortran::semantics::MiscChecker, Fortran::semantics::NamelistChecker, Fortran::semantics::NullifyChecker, Fortran::semantics::PurityChecker, Fortran::semantics::ReturnStmtChecker, Fortran::semantics::SelectRankConstructChecker, Fortran::semantics::SelectTypeChecker, Fortran::semantics::StopChecker>, std::optional<Fortran::parser::Statement<Fortran::parser::ProgramStmt>>, Fortran::parser::SpecificationPart, Fortran::parser::ExecutionPart, std::optional<Fortran::parser::InternalSubprogramPart>, Fortran::parser::Statement<Fortran::parser::EndProgramStmt>>(std::tuple<std::optional<Fortran::parser::Statement<Fortran::parser::ProgramStmt>>, Fortran::parser::SpecificationPart, Fortran::parser::ExecutionPart, std::optional<Fortran::parser::InternalSubprogramPart>, Fortran::parser::Statement<Fortran::parser::EndProgramStmt>> const&, Fortran::semantics::SemanticsVisitor<Fortran::semantics::AllocateChecker, Fortran::semantics::ArithmeticIfStmtChecker, Fortran::semantics::AssignmentChecker, Fortran::semantics::CaseChecker, Fortran::semantics::CoarrayChecker, Fortran::semantics::DataChecker, Fortran::semantics::DeallocateChecker, Fortran::semantics::DoForallChecker, Fortran::semantics::IfStmtChecker, Fortran::semantics::IoChecker, Fortran::semantics::MiscChecker, Fortran::semantics::NamelistChecker, Fortran::semantics::NullifyChecker, Fortran::semantics::PurityChecker, Fortran::semantics::ReturnStmtChecker, Fortran::semantics::SelectRankConstructChecker, Fortran::semantics::SelectTypeChecker, Fortran::semantics::StopChecker>&)::'lambda'(Fortran::semantics::SemanticsVisitor<Fortran::semantics::AllocateChecker, Fortran::semantics::ArithmeticIfStmtChecker, Fortran::semantics::AssignmentChecker, Fortran::semantics::CaseChecker, Fortran::semantics::CoarrayChecker, Fortran::semantics::DataChecker, Fortran::semantics::DeallocateChecker, Fortran::semantics::DoForallChecker, Fortran::semantics::IfStmtChecker, Fortran::semantics::IoChecker, Fortran::semantics::MiscChecker, Fortran::semantics::NamelistChecker, Fortran::semantics::NullifyChecker, Fortran::semantics::PurityChecker, Fortran::semantics::ReturnStmtChecker, Fortran::semantics::SelectRankConstructChecker, Fortran::semantics::SelectTypeChecker, Fortran::semantics::StopChecker> const&), std::tuple<std::optional<Fortran::parser::Statement<Fortran::parser::ProgramStmt>>, Fortran::parser::SpecificationPart, Fortran::parser::ExecutionPart, std::optional<Fortran::parser::InternalSubprogramPart>, Fortran::parser::Statement<Fortran::parser::EndProgramStmt>>>(std::tuple<std::optional<Fortran::parser::Statement<Fortran::parser::ProgramStmt>>, Fortran::parser::SpecificationPart, Fortran::parser::ExecutionPart, std::optional<Fortran::parser::InternalSubprogramPart>, Fortran::parser::Statement<Fortran::parser::EndProgramStmt>> const&, void Fortran::parser::Walk<Fortran::semantics::SemanticsVisitor<Fortran::semantics::AllocateChecker, Fortran::semantics::ArithmeticIfStmtChecker, Fortran::semantics::AssignmentChecker, Fortran::semantics::CaseChecker, Fortran::semantics::CoarrayChecker, Fortran::semantics::DataChecker, Fortran::semantics::DeallocateChecker, Fortran::semantics::DoForallChecker, Fortran::semantics::IfStmtChecker, Fortran::semantics::IoChecker, Fortran::semantics::MiscChecker, Fortran::semantics::NamelistChecker, Fortran::semantics::NullifyChecker, Fortran::semantics::PurityChecker, Fortran::semantics::ReturnStmtChecker, Fortran::semantics::SelectRankConstructChecker, Fortran::semantics::SelectTypeChecker, Fortran::semantics::StopChecker>, std::optional<Fortran::parser::Statement<Fortran::parser::ProgramStmt>>, Fortran::parser::SpecificationPart, Fortran::parser::ExecutionPart, std::optional<Fortran::parser::InternalSubprogramPart>, Fortran::parser::Statement<Fortran::parser::EndProgramStmt>>(std::tuple<std::optional<Fortran::parser::Statement<Fortran::parser::ProgramStmt>>, Fortran::parser::SpecificationPart, Fortran::parser::ExecutionPart, std::optional<Fortran::parser::InternalSubprogramPart>, Fortran::parser::Statement<Fortran::parser::EndProgramStmt>> const&, Fortran::semantics::SemanticsVisitor<Fortran::semantics::AllocateChecker, Fortran::semantics::ArithmeticIfStmtChecker, Fortran::semantics::AssignmentChecker, Fortran::semantics::CaseChecker, Fortran::semantics::CoarrayChecker, Fortran::semantics::DataChecker, Fortran::semantics::DeallocateChecker, Fortran::semantics::DoForallChecker, Fortran::semantics::IfStmtChecker, Fortran::semantics::IoChecker, Fortran::semantics::MiscChecker, Fortran::semantics::NamelistChecker, Fortran::semantics::NullifyChecker, Fortran::semantics::PurityChecker, Fortran::semantics::ReturnStmtChecker, Fortran::semantics::SelectRankConstructChecker, Fortran::semantics::SelectTypeChecker, Fortran::semantics::StopChecker>&)::'lambda'(Fortran::semantics::SemanticsVisitor<Fortran::semantics::AllocateChecker, Fortran::semantics::ArithmeticIfStmtChecker, Fortran::semantics::AssignmentChecker, Fortran::semantics::CaseChecker, Fortran::semantics::CoarrayChecker, Fortran::semantics::DataChecker, Fortran::semantics::DeallocateChecker, Fortran::semantics::DoForallChecker, Fortran::semantics::IfStmtChecker, Fortran::semantics::IoChecker, Fortran::semantics::MiscChecker, Fortran::semantics::NamelistChecker, Fortran::semantics::NullifyChecker, Fortran::semantics::PurityChecker, Fortran::semantics::ReturnStmtChecker, Fortran::semantics::SelectRankConstructChecker, Fortran::semantics::SelectTypeChecker, Fortran::semantics::StopChecker> const&)) (/path/to/install/lib/libFortranSemantics.so.19git+0x214837c)
#19 0x0000ffffa01150a8 Fortran::semantics::Semantics::Perform() (/path/to/install/lib/libFortranSemantics.so.19git+0x21450a8)
#20 0x0000ffffa60e2a0c Fortran::frontend::FrontendAction::runSemanticChecks() (/path/to/install/lib/libflangFrontend.so.19git+0x192a0c)
#21 0x0000ffffa619f3f8 Fortran::frontend::CodeGenAction::beginSourceFileAction() (/path/to/install/lib/libflangFrontend.so.19git+0x24f3f8)
#22 0x0000ffffa60e2058 Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&) (/path/to/install/lib/libflangFrontend.so.19git+0x192058)
#23 0x0000ffffa60d6388 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) (/path/to/install/lib/libflangFrontend.so.19git+0x186388)
#24 0x0000ffffa6635020 Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) (/path/to/install/lib/libflangFrontendTool.so.19git+0x5020)
#25 0x0000000000405eb8 fc1_main(llvm::ArrayRef<char const*>, char const*) (/path/to/install/bin/flang-new+0x405eb8)
#26 0x0000000000404ae0 main (/path/to/install/bin/flang-new+0x404ae0)
#27 0x0000ffffa4cb4384 __libc_start_main (/lib64/libc.so.6+0x24384)
#28 0x0000000000404d28 _start (/path/to/install/bin/flang-new+0x404d28)
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 61ff9f8db8d18002767ea27f83a4bfb8ed47f255)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /path/to/install/bin
flang-new: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
flang-new: note: diagnostic msg: /tmp/test-82069a
flang-new: note: diagnostic msg: /tmp/test-82069a.sh
flang-new: note: diagnostic msg: 

********************
```
```console
$ gfortran -v test.f90
Driving: gfortran -v test.f90 -l gfortran -l m -shared-libgcc
Using built-in specs.
COLLECT_GCC=gfortran
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/aarch64-redhat-linux/8/lto-wrapper
Target: aarch64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl --disable-libmpx --enable-gnu-indirect-function --build=aarch64-redhat-linux
Thread model: posix
gcc version 8.5.0 20210514 (Red Hat 8.5.0-18) (GCC) 
 :
test.f90:4:12:

   integer i/1/ ! only Fujitsu compiler accpets this
            1
Error: Invalid old style initialization for derived type component at (1)
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to