Open
Description
Version of flang : 21.0.0(d2047242e6d0f0deb7634ff22ab164354c520c79)/AArch64
As in the attached program, when type-param-def-stmt
is specified in syntax of a derived-type definition
, a compilation terminates abnormally.
When the following line 13 is commented out, not yet implemented: parameterized derived types
is output.
TYPE(ty1(2,5)), ALLOCATABLE::ty1_cmp(:)
When the following line 15 is commented out, the compilation succeeds.
TYPE(ty2(4,8)) ::ty2_obj
The following are the test program, Flang, Gfortran and ifx compilation/execution result.
snen_mod_n022_22.f90:
program main
TYPE ty(k1,k2)
INTEGER ,KIND::k1,k2=5
INTEGER::arr(k1:k2)=10
CHARACTER(LEN=k2)::ch
END TYPE ty
TYPE,EXTENDS(ty)::ty1(k3)
INTEGER,KIND ::k3=4
TYPE(ty(2,k3+1))::cmp_ty = ty(2,k3+1)(55,'HI')
END TYPE ty1
TYPE ty2(l1, l2)
INTEGER,LEN ::l1,l2
TYPE(ty1(2,5)), ALLOCATABLE::ty1_cmp(:)
END TYPE ty2
TYPE(ty2(4,8)) ::ty2_obj
end program main
$ flang snen_mod_n022_22.f90
flang: /work/groups/ssoft/compiler/llvm/src/llvm-main/flang/lib/Lower/Mangler.cpp:229: std::__cxx11::string Fortran::lower::mangle::mangleName(const Fortran::semantics::DerivedTypeSpec&, Fortran::lower::mangle::ScopeBlockIdMap&): Assertion `init && "derived type kind param is not constant"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /work/groups/ssoft/compiler/llvm/aarch64/main-20250210-d2047242e6d0/bin/flang -fc1 -triple aarch64-unknown-linux-gnu -emit-obj -mrelocation-model pic -pic-level 2 -pic-is-pie -target-cpu generic -target-feature +outline-atomics -target-feature +v8a -target-feature +fp-armv8 -target-feature
+neon -resource-dir /work/groups/ssoft/compiler/llvm/aarch64/main-20250210-d2047242e6d0/lib/clang/21 -mframe-pointer=non-leaf -o /tmp/snen_mod_n022_22-907ae8.o -x f95-cpp-input snen_mod_n022_22.f90
#0 0x000040003d91f8c8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/work/groups/ssoft/compiler/llvm/aarch64/main-latest/lib/libLLVM.so.21.0git+0x5b9f8c8)
#1 0x000040003d91d910 llvm::sys::RunSignalHandlers() (/work/groups/ssoft/compiler/llvm/aarch64/main-latest/lib/libLLVM.so.21.0git+0x5b9d910)
#2 0x000040003d91da6c SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#3 0x000040002ddf07a0 (linux-vdso.so.1+0x7a0)
#4 0x0000400042996274 raise (/lib64/libc.so.6+0x36274)
#5 0x0000400042980a2c abort (/lib64/libc.so.6+0x20a2c)
#6 0x000040004298fba0 __assert_fail_base (/lib64/libc.so.6+0x2fba0)
#7 0x000040004298fc18 __assert_perror_fail (/lib64/libc.so.6+0x2fc18)
#8 0x000000000528cf50 Fortran::lower::mangle::mangleName[abi:cxx11](Fortran::semantics::DerivedTypeSpec const&, llvm::DenseMap<Fortran::semantics::Scope*, long, llvm::DenseMapInfo<Fortran::semantics::Scope*, void>, llvm::detail::DenseMapPair<Fortran::semantics::Scope*, long>>&) (/work/groups/ssoft/compiler/llvm/aar
ch64/main-20250210-d2047242e6d0/bin/flang+0x528cf50)
#9 0x0000000004f44e98 (anonymous namespace)::FirConverter::mangleName(Fortran::semantics::DerivedTypeSpec const&) Bridge.cpp:0:0
#10 0x0000000005234ae4 (anonymous namespace)::TypeBuilderImpl::genDerivedType(Fortran::semantics::DerivedTypeSpec const&) ConvertType.cpp:0:0
#11 0x00000000052360f4 Fortran::lower::translateDerivedTypeToFIRType(Fortran::lower::AbstractConverter&, Fortran::semantics::DerivedTypeSpec const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250210-d2047242e6d0/bin/flang+0x52360f4)
#12 0x0000000005174b34 Fortran::lower::genInlinedStructureCtorLit(Fortran::lower::AbstractConverter&, mlir::Location, Fortran::evaluate::StructureConstructor const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250210-d2047242e6d0/bin/flang+0x5174b34)
#13 0x000000000513449c (anonymous namespace)::ScalarExprLowering::genval(Fortran::evaluate::StructureConstructor const&) ConvertExpr.cpp:0:0
#14 0x000000000513508c std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<fir::ExtendedValue (*)(fir::ExtendedValue (anonymous namespace)::ScalarExprLowering::genval<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)6>>(Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(For
tran::common::TypeCategory)6>> const&)::'lambda'(Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)6> const&)&&, std::variant<Fortran::evaluate::Constant<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)6>>, Fortran::evaluate::ArrayConstructor<Fortran::evaluate::SomeKind<(Fortran::common::TypeCate
gory)6>>, Fortran::evaluate::StructureConstructor, Fortran::evaluate::Designator<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)6>>, Fortran::evaluate::FunctionRef<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)6>>, Fortran::evaluate::Parentheses<Fortran::evaluate::SomeKind<(Fortran::common::
TypeCategory)6>>> const&)>, std::tuple<std::variant<Fortran::evaluate::Constant<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)6>>, Fortran::evaluate::ArrayConstructor<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)6>>, Fortran::evaluate::StructureConstructor, Fortran::evaluate::Designator<Fo
rtran::evaluate::SomeKind<(Fortran::common::TypeCategory)6>>, Fortran::evaluate::FunctionRef<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)6>>, Fortran::evaluate::Parentheses<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)6>>> const&>, std::integer_sequence<unsigned long, 0ul>>::__visit_invo
ke(fir::ExtendedValue (anonymous namespace)::ScalarExprLowering::genval<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)6>>(Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)6>> const&)::'lambda'(Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)6> const&)&&, std:
:variant<Fortran::evaluate::Constant<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)6>>, Fortran::evaluate::ArrayConstructor<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)6>>, Fortran::evaluate::StructureConstructor, Fortran::evaluate::Designator<Fortran::evaluate::SomeKind<(Fortran::common:
:TypeCategory)6>>, Fortran::evaluate::FunctionRef<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)6>>, Fortran::evaluate::Parentheses<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)6>>> const&) ConvertExpr.cpp:0:0
#15 0x0000000005089438 std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<fir::ExtendedValue (*)(fir::ExtendedValue (anonymous namespace)::ScalarExprLowering::genval<Fortran::evaluate::SomeType>(Fortran::evaluate::Expr<Fortran::evaluate::SomeType> const&)::'lambda'(Fortran::evaluate::
SomeType const&)&&, std::variant<Fortran::evaluate::value::Integer<128, true, 32, unsigned int, unsigned long, 128>, Fortran::evaluate::NullPointer, Fortran::evaluate::ProcedureDesignator, Fortran::evaluate::ProcedureRef, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>, Fortran
::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)2>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)3>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)4>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran
::common::TypeCategory)5>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)1>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)6>>> const&)>, std::tuple<std::variant<Fortran::evaluate::value::Integer<128, true, 32, unsigned int, unsigned long, 1
28>, Fortran::evaluate::NullPointer, Fortran::evaluate::ProcedureDesignator, Fortran::evaluate::ProcedureRef, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)2>>, Fortran::evaluate::Expr<Fortran
::evaluate::SomeKind<(Fortran::common::TypeCategory)3>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)4>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)5>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)1
>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)6>>> const&>, std::integer_sequence<unsigned long, 10ul>>::__visit_invoke(fir::ExtendedValue (anonymous namespace)::ScalarExprLowering::genval<Fortran::evaluate::SomeType>(Fortran::evaluate::Expr<Fortran::evaluate::SomeType> const
&)::'lambda'(Fortran::evaluate::SomeType const&)&&, std::variant<Fortran::evaluate::value::Integer<128, true, 32, unsigned int, unsigned long, 128>, Fortran::evaluate::NullPointer, Fortran::evaluate::ProcedureDesignator, Fortran::evaluate::ProcedureRef, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::c
ommon::TypeCategory)0>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)2>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)3>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)4>>, Fortran::evaluate::Expr<Fort
ran::evaluate::SomeKind<(Fortran::common::TypeCategory)5>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)1>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)6>>> const&) ConvertExpr.cpp:0:0
#16 0x000000000508cdf8 fir::ExtendedValue (anonymous namespace)::ScalarExprLowering::genval<Fortran::evaluate::SomeType>(Fortran::evaluate::Expr<Fortran::evaluate::SomeType> const&) ConvertExpr.cpp:0:0
#17 0x000000000508d0d8 Fortran::lower::createSomeInitializerExpression(mlir::Location, Fortran::lower::AbstractConverter&, Fortran::evaluate::Expr<Fortran::evaluate::SomeType> const&, Fortran::lower::SymMap&, Fortran::lower::StatementContext&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250210-d2047242e6d0/bin/
flang+0x508d0d8)
#18 0x000000000524bb70 genInitializerExprValue(Fortran::lower::AbstractConverter&, mlir::Location, Fortran::evaluate::Expr<Fortran::evaluate::SomeType> const&, Fortran::lower::StatementContext&) ConvertVariable.cpp:0:0
#19 0x000000000524be90 defineGlobal(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Variable const&, llvm::StringRef, mlir::StringAttr, cuf::DataAttributeAttr)::'lambda1'(fir::FirOpBuilder&)::operator()(fir::FirOpBuilder&) const ConvertVariable.cpp:0:0
#20 0x0000000005243f88 Fortran::lower::createGlobalInitialization(fir::FirOpBuilder&, fir::GlobalOp, std::function<void (fir::FirOpBuilder&)>) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250210-d2047242e6d0/bin/flang+0x5243f88)
#21 0x0000000005251510 defineGlobal(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Variable const&, llvm::StringRef, mlir::StringAttr, cuf::DataAttributeAttr) ConvertVariable.cpp:0:0
#22 0x0000000005252068 Fortran::lower::instantiateVariable(Fortran::lower::AbstractConverter&, Fortran::lower::pft::Variable const&, Fortran::lower::SymMap&, llvm::DenseMap<std::tuple<Fortran::semantics::Scope const*, unsigned long>, mlir::Value, llvm::DenseMapInfo<std::tuple<Fortran::semantics::Scope const*, unsign
ed long>, void>, llvm::detail::DenseMapPair<std::tuple<Fortran::semantics::Scope const*, unsigned long>, mlir::Value>>&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250210-d2047242e6d0/bin/flang+0x5252068)
#23 0x0000000004f79c60 (anonymous namespace)::FirConverter::startNewFunction(Fortran::lower::pft::FunctionLikeUnit&) Bridge.cpp:0:0
#24 0x0000000004f91718 (anonymous namespace)::FirConverter::lowerFunc(Fortran::lower::pft::FunctionLikeUnit&) Bridge.cpp:0:0
#25 0x0000000004f75928 Fortran::lower::LoweringBridge::lower(Fortran::parser::Program const&, Fortran::semantics::SemanticsContext const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250210-d2047242e6d0/bin/flang+0x4f75928)
#26 0x0000000004f34dc0 Fortran::frontend::CodeGenAction::beginSourceFileAction() (/work/groups/ssoft/compiler/llvm/aarch64/main-20250210-d2047242e6d0/bin/flang+0x4f34dc0)
#27 0x0000000004e42978 Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250210-d2047242e6d0/bin/flang+0x4e42978)
#28 0x0000000004e31cec Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250210-d2047242e6d0/bin/flang+0x4e31cec)
#29 0x0000000004e4737c Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250210-d2047242e6d0/bin/flang+0x4e4737c)
#30 0x0000000004e2a598 fc1_main(llvm::ArrayRef<char const*>, char const*) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250210-d2047242e6d0/bin/flang+0x4e2a598)
#31 0x0000000004e29fe0 main (/work/groups/ssoft/compiler/llvm/aarch64/main-20250210-d2047242e6d0/bin/flang+0x4e29fe0)
#32 0x0000400042984384 __libc_start_main (/lib64/libc.so.6+0x24384)
#33 0x0000000004e284ac _start (/work/groups/ssoft/compiler/llvm/aarch64/main-20250210-d2047242e6d0/bin/flang+0x4e284ac)
flang-20: error: unable to execute command: Aborted (core dumped)
flang-20: error: flang frontend command failed due to signal (use -v to see invocation)
flang version 21.0.0git (https://github.com/llvm/llvm-project.git d2047242e6d0f0deb7634ff22ab164354c520c79)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /work/groups/ssoft/compiler/llvm/aarch64/main-20250210-d2047242e6d0/bin
Build config: +assertions
flang-20: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
flang-20: note: diagnostic msg: /tmp/snen_mod_n022_22-eb2027
flang-20: note: diagnostic msg: /tmp/snen_mod_n022_22-eb2027.sh
flang-20: note: diagnostic msg:
********************
$
$ cat /tmp/snen_mod_n022_22-eb2027
#line "./snen_mod_n022_22.f90" 1
program main
TYPE ty(k1,k2)
INTEGER ,KIND::k1,k2=5
INTEGER::arr(k1:k2)=10
CHARACTER(LEN=k2)::ch
END TYPE ty
TYPE,EXTENDS(ty)::ty1(k3)
INTEGER,KIND ::k3=4
TYPE(ty(2,k3+1))::cmp_ty = ty(2,k3+1)(55,'HI')
END TYPE ty1
TYPE ty2(l1, l2)
INTEGER,LEN ::l1,l2
TYPE(ty1(2,5)), ALLOCATABLE::ty1_cmp(:)
END TYPE ty2
TYPE(ty2(4,8)) ::ty2_obj
end program main
$
$ cat /tmp/snen_mod_n022_22-eb2027.sh
# Crash reproducer for clang version 21.0.0git (https://github.com/llvm/llvm-project.git d2047242e6d0f0deb7634ff22ab164354c520c79)
# Driver args: "snen_mod_n022_22.f90"
# Original command: "/work/groups/ssoft/compiler/llvm/aarch64/main-20250210-d2047242e6d0/bin/flang" "-fc1" "-triple" "aarch64-unknown-linux-gnu" "-emit-obj" "-mrelocation-model" "pic" "-pic-level" "2" "-pic-is-pie" "-target-cpu" "generic" "-target-feature" "+outline-atomics" "-target-feature" "+v8a" "-target-featur
e" "+fp-armv8" "-target-feature" "+neon" "-resource-dir" "/work/groups/ssoft/compiler/llvm/aarch64/main-20250210-d2047242e6d0/lib/clang/21" "-mframe-pointer=non-leaf" "-o" "/tmp/snen_mod_n022_22-907ae8.o" "-x" "f95-cpp-input" "snen_mod_n022_22.f90"
"/work/groups/ssoft/compiler/llvm/aarch64/main-20250210-d2047242e6d0/bin/flang" "-fc1" "-triple" "aarch64-unknown-linux-gnu" "-emit-obj" "-mrelocation-model" "pic" "-pic-level" "2" "-pic-is-pie" "-target-cpu" "generic" "-target-feature" "+outline-atomics" "-target-feature" "+v8a" "-target-feature" "+fp-armv8" "-tar
get-feature" "+neon" "-mframe-pointer=non-leaf" "-x" "f95-cpp-input" "snen_mod_n022_22-eb2027"
$
$ gfortran snen_mod_n022_22.f90
snen_mod_n022_22.f90:9:15:
9 | TYPE(ty(2,k3+1))::cmp_ty = ty(2,k3+1)(55,'HI')
| 1
Error: Invalid character in name at (1)
snen_mod_n022_22.f90:9:31:
9 | TYPE(ty(2,k3+1))::cmp_ty = ty(2,k3+1)(55,'HI')
| 1
Error: Cannot convert UNKNOWN to TYPE(ty) at (1)
$
$ ifx snen_mod_n022_22.f90
snen_mod_n022_22.f90(15): error #8746: The type and kind type parameters in a structure constructor must be the same type and kind type parameters as the object. [TY]
TYPE(ty2(4,8)) ::ty2_obj
^
snen_mod_n022_22.f90(15): error #6197: An assignment of different structure types is invalid. [CMP_TY]
TYPE(ty2(4,8)) ::ty2_obj
^
compilation aborted for snen_mod_n022_22.f90 (code 1)
$
Metadata
Metadata
Assignees
Type
Projects
Status
Todo