Issue |
149353
|
Summary |
[flang] Incorrect element byte length when checking the FIELD argument of UNPACK intrinsic.
|
Labels |
flang:frontend
|
Assignees |
|
Reporter |
DanielCChen
|
Consider the following code:
```
program main
type A
integer x
end type
type, extends(A) :: B
integer :: y
end type
logical*4 :: mask(2,1,3)
type(A), pointer :: fV(:,:,:)
class(A), target, allocatable :: bT(:)
allocate(bT(12), source=(/ (B(i, i+1), i=1,12) /) )
fv(2:3, (0):0, 3:5) => bT(::2)
mask = reshape ( (/ .false., .false., .true., .true., &
.false., .false. /), (/ 2,1,3 /))
print*, sizeof(fv(1,1,1))
fv = unpack((/ A(101), A(-101) /), mask, fv)
end program
```
Flang failed at the execution as:
```
> a.out
4
fatal Fortran runtime error(t.f:23): UNPACK: VECTOR= has element byte length 4 but FIELD= has length 8
IOT/Abort trap(coredump)
```
However, as it is printed, the `sizeof` an element of FIELD `fv` is 4.
All ifort, gfortran and XLF executed the code successfully.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs