<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/154043>154043</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Flang] Incorrect execution result when using actual and dummy arguments with different lengths
</td>
</tr>
<tr>
<th>Labels</th>
<td>
flang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ohno-fj
</td>
</tr>
</table>
<pre>
```
Version of flang : 22.0.0(9e5f9ff82f2f060aac73a965ab37fdbb6b53cfe0)/AArch64
```
The attached program (`test01.f90`) has incorrect results.
In this program, the character length of `actual argument (ptr) `is 4 and the character length of `dummy argument (ch)` is 2.
According to `Fortran standard 2023 15.5.2.5 Ordinary dummy variables`:
```
The dummy argument becomes associated with the leftmost len characters of the actual argument.
```
This results in the following operation.
- `dummy argument ch(1)` is associated with `first two characters ("pa")` of `actual argument (pass)`
- `dummy argument ch(2)` is also associated with `first two characters ("pa")` of `actual argument (pass)`
So the expected result value should be `"papa"`.
The following are the test program, Flang, Gfortran and ifx compilation/execution results.
test01.f90:
```fortran
program main
character(len=4),pointer,contiguous :: ptr(:)
character(len=4),target :: ch(2) = "pass"
integer, parameter :: n=2
ptr=>ch
write(6,*) "main : ptr = ", ptr
call sub(ptr, n)
contains
subroutine sub(ch, m)
character(len=m),pointer :: ch(:)
write(6,*) "sub : ch = ", ch
end subroutine sub
end program main
```
```
$ flang test01.f90; ./a.out
main : ptr = passpass
sub : ch = passpass
$
```
```
$ gfortran test01.f90; ./a.out
main : ptr = passpass
sub : ch = papa
$
```
```
$ ifx test01.f90; ./a.out
main : ptr = passpass
sub : ch = papa
$
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0Vs1u4zYQfhr6MohAjyxZPvigTepiTz206H1EkRIXFCmQVLL79gUpeeM4m8UCbYEAMSXOfD-cGYpC0IOV8syqT6x62tESR-fPbrTuQX3Zda7_dmY13_54-7f0QTsLToEyZAdgZQuIBS84w-YkK3VSqkGFitecSBxLOtUVdeVR9V1Xd1UplOQMTwwvbevFWB8Yb28RGG__GiVQjCRG2cPs3eBpAoYNq3mUIfJ9oU55N55gpADaCue9FBG8DIuJoWC8_Wwhjjpc4xk-QhwliJE8iSg9GGmHOCYlrOYk4kIGyA_LJG1MaHP0CYDVXAc4ANn-Zwn6ZZq-vYkXY5JZc9ABsFiVtUI432s7QHQp6uJ89GQhRLI9-R6QYwn7qqgKLCr4I-0l_w3W7M_kNXVGhqS9bO-MS67dseikcJMMQCE4oSnKHl50HLMOI1WcXIhJxquokOSk13eGFO_AdLi6DdrmEOWMcS9JnJulp6idTWEPP7AnedPsX_25J8hqrrQPEeKLuyWXigBxJoa4BX98fBTCuudnHPCGgwnufyfCePuny27Jr7MUCWd1EZ7JLBLC6BbTQych1zfOtGLUvHjtjVejycucLLXFbaVfUm-mH7-rrcJS-Wr1FYSbZm3y4TC8yK9SLOn3becw3t602ds629Ix3l77ciKdlq_mMGyMtKx8OuQ2f5ydtvnxo3A26mFxS0hjI02O3GNNWuApJfk4SyQ_yHiN-352wMonyD4lkzHnSHBDBoSZPE0yNesWmDKuuxJ0-cTK38SY1y9eR8mwqRk-MmxzbsSkDjamV6ycOPqVLxkDYemu8-IR7ColaSVtQ94Vls67JWort72J_yNMm-r3oqc31sEb2TdufcQ6LF2OATHCLetVqrT9PSPepod3R3o3ld8s8bDN_9tK-QQFwwsVbokJ55136ZDyQfEW3lG8ecnwB5fCPfxwrez_kMFMv4qeWunfAP8S7q4_l_2pPNFOnvfHqjo0WHK-G88k6rLiAnuqm2O_V2WpEA8cq66Up1I1O31GjhVv9g3fVw3yopZ0PB6PpTqVh-O-PrIDlxNpUxjzPBXODzsdwiLP--rAD-XOUCdNyB8FiGodJpi-D_w5BTx0yxDYgRsdYnhNEXU0-UtiHT_VE3z-fjPfTxp4GaWFJeQptg1N299dYGEdwr1WSvo0TtcrN-wWb85jjHPIzXBheBl0HJeuEG5ieEmMtn8Ps3dfpIgML1lhYHjZRD6f8Z8AAAD__0fIuTY">