-
Notifications
You must be signed in to change notification settings - Fork 15.2k
Labels
crashPrefer [crash-on-valid] or [crash-on-invalid]Prefer [crash-on-valid] or [crash-on-invalid]flang:frontend
Description
Version of flang : 20.0.0(f5a35a31bfe6cbc16bec0c130f2bb3632dbf1fbf)/AArch64
In the attached program, when intrinsic function (char) is written as the first actual argument of call statement, and it becomes the first dummy argument of module subroutine construct (ss), and external attribute is defined, an abnormal termination occurs during compilation.
If submodule is not used, a compilation error occurs. This is correct behavior.
The above program is sngg427o_3.f90.
The following are the test program, Flang, Gfortran and ifx compilation/execution result.
sngg427o_2.f90:
module m1
implicit none
intrinsic:: char
private ::char
interface
module subroutine sub()
end subroutine
module subroutine ss(x1,x2)
character,external:: x1
character(*)::x2
end
end interface
end
submodule (m1) submod
contains
module procedure sub
implicit none
character::cc
call ss(char,cc)
write(1,'(a)') cc
end
module procedure ss
x2=x1(ichar('a'))
end
end submodule submod
program main
use m1
call sub
print *,'pass'
end program main$ flang sngg427o_2.f90
fatal internal error: CHECK(!type_) failed at /work/groups/ssoft/compiler/llvm/src/llvm-main/flang/lib/Semantics/symbol.cpp(151)
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-20250120-69d3ba3db922/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-20250120-69d3ba3db922/lib/clang/20 -mframe-pointer=non-leaf -o /tmp/sngg427o_2-88676c.o -x f95-cpp-input sngg427o_2.f90
#0 0x0000400019ef25a8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/work/groups/ssoft/compiler/llvm/aarch64/main-latest/lib/libLLVM.so.20.0git+0x5a025a8)
#1 0x0000400019ef0630 llvm::sys::RunSignalHandlers() (/work/groups/ssoft/compiler/llvm/aarch64/main-latest/lib/libLLVM.so.20.0git+0x5a00630)
#2 0x0000400019ef0788 SignalHandler(int) Signals.cpp:0:0
#3 0x000040000a0107a0 (linux-vdso.so.1+0x7a0)
#4 0x000040001ed86274 raise (/lib64/libc.so.6+0x36274)
#5 0x000040001ed70a2c abort (/lib64/libc.so.6+0x20a2c)
#6 0x000000000615a834 (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x615a834)
#7 0x00000000056376a0 std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<void (*)(Fortran::common::visitors<Fortran::semantics::Symbol::SetType(Fortran::semantics::DeclTypeSpec const&)::'lambda'(Fortran::semantics::EntityDetails&), Fortran::semantics::Symbol::SetType(Fortran::semanti
cs::DeclTypeSpec const&)::'lambda0'(Fortran::semantics::ObjectEntityDetails&), Fortran::semantics::Symbol::SetType(Fortran::semantics::DeclTypeSpec const&)::'lambda1'(Fortran::semantics::AssocEntityDetails&), Fortran::semantics::Symbol::SetType(Fortran::semantics::DeclTypeSpec const&)::'lambda2'(Fortran::semantics::
ProcEntityDetails&), Fortran::semantics::Symbol::SetType(Fortran::semantics::DeclTypeSpec const&)::'lambda3'(Fortran::semantics::TypeParamDetails&), Fortran::semantics::Symbol::SetType(Fortran::semantics::DeclTypeSpec const&)::'lambda4'(auto&)>&&, std::variant<Fortran::semantics::UnknownDetails, Fortran::semantics::
MainProgramDetails, Fortran::semantics::ModuleDetails, Fortran::semantics::SubprogramDetails, Fortran::semantics::SubprogramNameDetails, Fortran::semantics::EntityDetails, Fortran::semantics::ObjectEntityDetails, Fortran::semantics::ProcEntityDetails, Fortran::semantics::AssocEntityDetails, Fortran::semantics::Deriv
edTypeDetails, Fortran::semantics::UseDetails, Fortran::semantics::UseErrorDetails, Fortran::semantics::HostAssocDetails, Fortran::semantics::GenericDetails, Fortran::semantics::ProcBindingDetails, Fortran::semantics::NamelistDetails, Fortran::semantics::CommonBlockDetails, Fortran::semantics::TypeParamDetails, Fort
ran::semantics::MiscDetails>&)>, std::tuple<std::variant<Fortran::semantics::UnknownDetails, Fortran::semantics::MainProgramDetails, Fortran::semantics::ModuleDetails, Fortran::semantics::SubprogramDetails, Fortran::semantics::SubprogramNameDetails, Fortran::semantics::EntityDetails, Fortran::semantics::ObjectEntity
Details, Fortran::semantics::ProcEntityDetails, Fortran::semantics::AssocEntityDetails, Fortran::semantics::DerivedTypeDetails, Fortran::semantics::UseDetails, Fortran::semantics::UseErrorDetails, Fortran::semantics::HostAssocDetails, Fortran::semantics::GenericDetails, Fortran::semantics::ProcBindingDetails, Fortra
n::semantics::NamelistDetails, Fortran::semantics::CommonBlockDetails, Fortran::semantics::TypeParamDetails, Fortran::semantics::MiscDetails>&>, std::integer_sequence<unsigned long, 5ul>>::__visit_invoke(Fortran::common::visitors<Fortran::semantics::Symbol::SetType(Fortran::semantics::DeclTypeSpec const&)::'lambda'(
Fortran::semantics::EntityDetails&), Fortran::semantics::Symbol::SetType(Fortran::semantics::DeclTypeSpec const&)::'lambda0'(Fortran::semantics::ObjectEntityDetails&), Fortran::semantics::Symbol::SetType(Fortran::semantics::DeclTypeSpec const&)::'lambda1'(Fortran::semantics::AssocEntityDetails&), Fortran::semantics:
:Symbol::SetType(Fortran::semantics::DeclTypeSpec const&)::'lambda2'(Fortran::semantics::ProcEntityDetails&), Fortran::semantics::Symbol::SetType(Fortran::semantics::DeclTypeSpec const&)::'lambda3'(Fortran::semantics::TypeParamDetails&), Fortran::semantics::Symbol::SetType(Fortran::semantics::DeclTypeSpec const&)::'
lambda4'(auto&)>&&, std::variant<Fortran::semantics::UnknownDetails, Fortran::semantics::MainProgramDetails, Fortran::semantics::ModuleDetails, Fortran::semantics::SubprogramDetails, Fortran::semantics::SubprogramNameDetails, Fortran::semantics::EntityDetails, Fortran::semantics::ObjectEntityDetails, Fortran::semant
ics::ProcEntityDetails, Fortran::semantics::AssocEntityDetails, Fortran::semantics::DerivedTypeDetails, Fortran::semantics::UseDetails, Fortran::semantics::UseErrorDetails, Fortran::semantics::HostAssocDetails, Fortran::semantics::GenericDetails, Fortran::semantics::ProcBindingDetails, Fortran::semantics::NamelistDe
tails, Fortran::semantics::CommonBlockDetails, Fortran::semantics::TypeParamDetails, Fortran::semantics::MiscDetails>&) symbol.cpp:0:0
#8 0x000000000563923c (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x563923c)
#9 0x0000000005359c2c std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<void (*)(Fortran::common::visitors<Fortran::semantics::SymbolMapper::MapSymbolExprs(Fortran::semantics::Symbol&)::'lambda'(Fortran::semantics::ObjectEntityDetails&), Fortran::semantics::SymbolMapper::MapSymbolEx
prs(Fortran::semantics::Symbol&)::'lambda0'(Fortran::semantics::ProcEntityDetails&), Fortran::semantics::SymbolMapper::MapSymbolExprs(Fortran::semantics::Symbol&)::'lambda1'(Fortran::semantics::HostAssocDetails const&), Fortran::semantics::SymbolMapper::MapSymbolExprs(Fortran::semantics::Symbol&)::'lambda2'(auto con
st&)>&&, std::variant<Fortran::semantics::UnknownDetails, Fortran::semantics::MainProgramDetails, Fortran::semantics::ModuleDetails, Fortran::semantics::SubprogramDetails, Fortran::semantics::SubprogramNameDetails, Fortran::semantics::EntityDetails, Fortran::semantics::ObjectEntityDetails, Fortran::semantics::ProcEn
tityDetails, Fortran::semantics::AssocEntityDetails, Fortran::semantics::DerivedTypeDetails, Fortran::semantics::UseDetails, Fortran::semantics::UseErrorDetails, Fortran::semantics::HostAssocDetails, Fortran::semantics::GenericDetails, Fortran::semantics::ProcBindingDetails, Fortran::semantics::NamelistDetails, Fort
ran::semantics::CommonBlockDetails, Fortran::semantics::TypeParamDetails, Fortran::semantics::MiscDetails>&)>, std::tuple<std::variant<Fortran::semantics::UnknownDetails, Fortran::semantics::MainProgramDetails, Fortran::semantics::ModuleDetails, Fortran::semantics::SubprogramDetails, Fortran::semantics::SubprogramNa
meDetails, Fortran::semantics::EntityDetails, Fortran::semantics::ObjectEntityDetails, Fortran::semantics::ProcEntityDetails, Fortran::semantics::AssocEntityDetails, Fortran::semantics::DerivedTypeDetails, Fortran::semantics::UseDetails, Fortran::semantics::UseErrorDetails, Fortran::semantics::HostAssocDetails, Fort
ran::semantics::GenericDetails, Fortran::semantics::ProcBindingDetails, Fortran::semantics::NamelistDetails, Fortran::semantics::CommonBlockDetails, Fortran::semantics::TypeParamDetails, Fortran::semantics::MiscDetails>&>, std::integer_sequence<unsigned long, 7ul>>::__visit_invoke(Fortran::common::visitors<Fortran::
semantics::SymbolMapper::MapSymbolExprs(Fortran::semantics::Symbol&)::'lambda'(Fortran::semantics::ObjectEntityDetails&), Fortran::semantics::SymbolMapper::MapSymbolExprs(Fortran::semantics::Symbol&)::'lambda0'(Fortran::semantics::ProcEntityDetails&), Fortran::semantics::SymbolMapper::MapSymbolExprs(Fortran::semanti
cs::Symbol&)::'lambda1'(Fortran::semantics::HostAssocDetails const&), Fortran::semantics::SymbolMapper::MapSymbolExprs(Fortran::semantics::Symbol&)::'lambda2'(auto const&)>&&, std::variant<Fortran::semantics::UnknownDetails, Fortran::semantics::MainProgramDetails, Fortran::semantics::ModuleDetails, Fortran::semantic
s::SubprogramDetails, Fortran::semantics::SubprogramNameDetails, Fortran::semantics::EntityDetails, Fortran::semantics::ObjectEntityDetails, Fortran::semantics::ProcEntityDetails, Fortran::semantics::AssocEntityDetails, Fortran::semantics::DerivedTypeDetails, Fortran::semantics::UseDetails, Fortran::semantics::UseEr
rorDetails, Fortran::semantics::HostAssocDetails, Fortran::semantics::GenericDetails, Fortran::semantics::ProcBindingDetails, Fortran::semantics::NamelistDetails, Fortran::semantics::CommonBlockDetails, Fortran::semantics::TypeParamDetails, Fortran::semantics::MiscDetails>&) resolve-names-utils.cpp:0:0
#10 0x0000000005358b98 Fortran::semantics::MapSubprogramToNewSymbols(Fortran::semantics::Symbol const&, Fortran::semantics::Symbol&, Fortran::semantics::Scope&, Fortran::semantics::SymbolAndTypeMappings*) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x5358b98)
#11 0x0000000005314ce8 Fortran::semantics::SubprogramVisitor::BeginMpSubprogram(Fortran::parser::Name const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x5314ce8)
#12 0x000000000531bf0c Fortran::semantics::ResolveNamesVisitor::BeginScopeForNode(Fortran::semantics::ProgramTree const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x531bf0c)
#13 0x000000000532c3cc Fortran::semantics::ResolveNamesVisitor::ResolveSpecificationParts(Fortran::semantics::ProgramTree&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x532c3cc)
#14 0x000000000532c488 Fortran::semantics::ResolveNamesVisitor::ResolveSpecificationParts(Fortran::semantics::ProgramTree&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x532c488)
#15 0x000000000532c8b4 Fortran::semantics::ResolveNamesVisitor::Pre(Fortran::parser::ProgramUnit const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x532c8b4)
#16 0x000000000532d18c Fortran::semantics::ResolveNames(Fortran::semantics::SemanticsContext&, Fortran::parser::Program const&, Fortran::semantics::Scope&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x532d18c)
#17 0x00000000053f1ba0 Fortran::semantics::Semantics::Perform() (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x53f1ba0)
#18 0x0000000004c39cf8 Fortran::frontend::FrontendAction::runSemanticChecks() (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x4c39cf8)
#19 0x0000000004d264cc Fortran::frontend::CodeGenAction::beginSourceFileAction() (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x4d264cc)
#20 0x0000000004c3bfcc Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x4c3bfcc)
#21 0x0000000004c2bb70 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x4c2bb70)
#22 0x0000000004c4085c Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x4c4085c)
#23 0x0000000004c24518 fc1_main(llvm::ArrayRef<char const*>, char const*) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x4c24518)
#24 0x0000000004c23f70 main (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x4c23f70)
#25 0x000040001ed74384 __libc_start_main (/lib64/libc.so.6+0x24384)
#26 0x0000000004c2243c _start (/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/bin/flang+0x4c2243c)
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 20.0.0git (https://github.com/llvm/llvm-project.git 69d3ba3db922fca8cfc47b5f115b6bea6a737aab)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/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/sngg427o_2-865f26
flang-20: note: diagnostic msg: /tmp/sngg427o_2-865f26.sh
flang-20: note: diagnostic msg:
********************
$
$ cat /tmp/sngg427o_2-865f26
#line "./sngg427o_2.f90" 1
module m1
implicit none
intrinsic:: char
private ::char
interface
module subroutine sub()
end subroutine
module subroutine ss(x1,x2)
character,external:: x1
character(*)::x2
end
end interface
end
submodule(m1) submod
contains
module procedure sub
implicit none
character::cc
call ss(char,cc)
write(1,'(a)') cc
end
module procedure ss
x2=x1(ichar('a'))
end
end submodule submod
program main
use m1
call sub
print *,'pass'
end program main
$
$ cat /tmp/sngg427o_2-865f26.sh
# Crash reproducer for clang version 20.0.0git (https://github.com/llvm/llvm-project.git 69d3ba3db922fca8cfc47b5f115b6bea6a737aab)
# Driver args: "sngg427o_2.f90"
# Original command: "/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/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-20250120-69d3ba3db922/lib/clang/20" "-mframe-pointer=non-leaf" "-o" "/tmp/sngg427o_2-88676c.o" "-x" "f95-cpp-input" "sngg427o_2.f90"
"/work/groups/ssoft/compiler/llvm/aarch64/main-20250120-69d3ba3db922/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" "sngg427o_2-865f26"
$
$ gfortran sngg427o_2.f90
sngg427o_2.f90:20:12:
20 | call ss(char,cc)
| 1
Error: Intrinsic ‘char’ at (1) is not allowed as an actual argument
$
$ ifx sngg427o_2.f90
sngg427o_2.f90(20): error #6551: This intrinsic procedure cannot be passed as an actual argument. [CHAR]
call ss(char,cc)
------------^
compilation aborted for sngg427o_2.f90 (code 1)
$
sngg427o_3.f90:
module m1
implicit none
intrinsic :: char
private :: char
contains
subroutine sub()
implicit none
character :: cc
call ss(char, cc)
write(1,'(a)') cc
end subroutine sub
subroutine ss(x1, x2)
implicit none
character,external:: x1
character(*)::x2
x2 = x1(ichar('a'))
end subroutine ss
end module m1
program main
use m1
call sub
print *,'sngg427o : pass'
end program mainflang sngg427o_3.f90
error: Semantic errors in sngg427o_3.f90
./sngg427o_3.f90:9:13: error: 'char' is not an unrestricted specific intrinsic procedure
call ss(char, cc)
^^^^
$
Metadata
Metadata
Assignees
Labels
crashPrefer [crash-on-valid] or [crash-on-invalid]Prefer [crash-on-valid] or [crash-on-invalid]flang:frontend
Type
Projects
Status
Done