diff options
author | Valentin Clement <clementval@gmail.com> | 2023-01-25 18:38:34 +0100 |
---|---|---|
committer | Valentin Clement <clementval@gmail.com> | 2023-01-25 18:39:03 +0100 |
commit | b1a34b242fb96ddedf34045d415cbb807534d733 (patch) | |
tree | 2735eaa113cd40f3443399208f21ed6a485cbc24 /llvm/lib/ProfileData/Coverage/CoverageMapping.cpp | |
parent | fbb003378b9cfda0f129396a9c92a53fce6d883c (diff) | |
download | llvm-b1a34b242fb96ddedf34045d415cbb807534d733.zip llvm-b1a34b242fb96ddedf34045d415cbb807534d733.tar.gz llvm-b1a34b242fb96ddedf34045d415cbb807534d733.tar.bz2 |
[flang] Fix element indexing in derived type default initialization
Derived type default initialization was not taking the step into
consideration.
```
module dt_init
type p1
integer :: a
end type
type, extends(p1) :: p2
integer :: b = 10
end type
contains
subroutine init_dt(z)
class(p1), intent(out) :: z(:)
select type(z)
type is (p2)
print*,z
end select
end subroutine
end module
program test
use dt_init
type(p2) :: t(6) = [ p2(1,2),p2(3,4),p2(5,6),p2(7,8),p2(9,10),p2(11,12) ]
print*,t
call init_dt(t(::2))
print*,t
end program
```
Without the fix, the three first elements are initialized
```
1 2 3 4 5 6 7 8 9 10 11 12
1 10 5 10 9 10
1 10 3 10 5 10 7 8 9 10 11 12
```
Where it should be element number 1,3,5
```
1 2 3 4 5 6 7 8 9 10 11 12
1 10 5 10 9 10
1 10 3 4 5 10 7 8 9 10 11 12
```
Reviewed By: klausler
Differential Revision: https://reviews.llvm.org/D142527
Diffstat (limited to 'llvm/lib/ProfileData/Coverage/CoverageMapping.cpp')
0 files changed, 0 insertions, 0 deletions