<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/147819>147819</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Support LOWER optional argument in C_F_POINTER interface
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
bcornille
</td>
</tr>
</table>
<pre>
Fortran 2023 introduced the LOWER optional argument to C_F_POINTER. It would be useful for this to be supported in flang.
Example:
```
program CPointersLB
use iso_c_binding
implicit none
real, allocatable, target :: A(:,:,:)
type(c_ptr) :: ptr
integer :: nx, ny, nz, i
real, pointer :: chunk(:,:)
nx = 10
ny = 10
nz = 10
allocate(A(nx, ny, nz))
A = reshape([(real(i), i=1, nx*ny*nz)], shape(A))
ptr = c_loc(A(1,1,1))
call c_f_pointer(ptr, chunk, [nx, ny], [0, 0])
print *, chunk(0,1)
deallocate(A)
end program
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx0U0Fv8zYM_TXyhfgCWbYb--CDkzRAgWItugE7GrJM29oUyZDkNumvH6Q4azJgQCKZFN_jI0Fy5-SoEWtS7EhxSPjiJ2PrThirpVKYdKa_1EdjveUaGGUZSO2t6ReBPfgJ4fXtz-cPMLOXRnMF3I7LCbUHb2DfHtv3t5ff_nj-2MCLhy-zqB46hMXhsCgYjAU_SRdiOwS3zLOxHnuQGgbF9bghtHk-89OskGQNoQ15ouuPNrM1o-Un2L8bqT1a97ojtIFADtKZVrSd1L3UY_TK06ykkB600RiYgtMiV4TtgStlBPe8UxhMz-2IHkLKrIGGsDJ8sv3dWUW8v8xIWCna2VvCqhsiWLQJjcIR7c2rz4FbX-L5HU75IGK-lnELF9Oi_35MXd106zOQ7AApvVqXB-v7x4qOtbggNJTyXxnVHW8ToRbdxGNhYShYeRVYyhgbVGeHNKLPhDWBqLnyFIfgvWGbR-rZ20guWmXEKiWwrP_7UMGVAtEO7doRwsrY3_2tJ3sgxe7fOq5pSbGj4abR_klrpfZAWHMHL-kt5xrU42OPwgPqHtYJu5-7pK-zvsoqnmCdbgtGK_ZUpslUD5ilRVHSgW0ZG7KuKLY032Ihsi6nRVomsmaUFXRLK0ZZnqebrOyKtMvLvizyjA9bklM8cak2Sn2eNsaOiXRuwTrNt2VaJYp3qFzcU8Y0fkF8JYyFtbV1AP3qltGRnCrpvPuh8dIrrH-_btf_7qvU9_sah9cOXGCyWFVP3s8uzuCRsOMo_bR0G2FOhB1DmvX6NVvzFwpP2DGKc4QdV_WfNfsnAAD__0a-Sqw">