Open
Description
File mod.f
module m
type::base
integer(4)::id
contains
procedure::print=>printbase
end type
private::printbase
interface
subroutine printbase(b)
import::base
class(base),intent(in)::b
end
end interface
end
File main.f
module m1
use m
type, extends (base) :: child
character*20 :: name = ''
contains
procedure :: print => printChild
end type
contains
subroutine printChild (b)
class (child), intent(in) :: b
print *, b%id, b%name
end subroutine
end module
program ftpbnd509a1
use m1
type (base), target :: b1
type (child), target :: c1
class (base), pointer :: b_ptr
c1 = child (20, 'c1_test')
end
Flang asserts as:
Assertion failed: isa<To>(Val) && "cast<Ty>() argument of incompatible type!", file llvm-project/llvm/include/llvm/Support/Casting.h, line 572, decltype(auto) llvm::cast(From &) [To = fir::RecordType, From = mlir::Type]()
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /home/cdchen/FLANG/build/bin/flang -fc1 -triple powerpc64-ibm-aix7.2.0.0 -emit-obj -ffree-form -fcolor-diagnostics -mrelocation-model pic -pic-level 2 -target-cpu pwr7 -resource-dir /home/cdchen/FLANG/build/lib/clang/21 -mframe-pointer=all -o ftpbnd509a1.o -x f95 ftpbnd509a1.f
flang-21: error: unable to execute command: IOT/Abort trap
If I move the code in mod.f into main.f, it compiles successfully.