Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[flang] Fixed slice offset computation in XEmbox codegen.
For character type with unknown length we end up generating a GEP with the base type `llvm.ptr<i[width]>`. The GEP produces the address of the first element of the slice, and it should be using the offset computed in the number of characters, while we were providing the offset in bytes. Simple reproducer fails with and w/o HLFIR: ``` program test integer,parameter :: ck = 4 character(:,ck),allocatable :: res(:,:) allocate(character(3,ck) :: res(2,2)) res(1,1) = ck_'111' res(1,2) = ck_'222' res(2,1) = ck_'333' res(2,2) = ck_'444' call check(res) contains subroutine check(res) character(:,ck),allocatable :: res(:,:) print *, res(2,:) end subroutine check end program test ``` Reviewed By: clementval Differential Revision: https://reviews.llvm.org/D156849
- Loading branch information