<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/102113>102113</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
function return type corrupting arguments received by c interoperable function
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ajmay81
</td>
</tr>
</table>
<pre>
```
flang-new version 20.0.0git (https://github.com/llvm/llvm-project.git 90617e99bb17303b351351681a70394c312e0e58)
```
Reproducer `test.f90`:
```
program main
use iso_c_binding
type, bind(c) :: NextValType
type(c_ptr) :: nv
end type NextValType
interface
function testa(i) bind(c)
import
type(NextValType) testa
integer(c_int), value :: i
end function testa
end interface
interface
subroutine testb(i) bind(c)
import
integer(c_int), value :: i
end subroutine testb
end interface
integer(c_int) :: j=2
type(NextValType) p
call testb(j)
p = testa(j)
end program main
```
Reproducer `funs.cpp`:
```
#include <stdio.h>
extern "C" {
typedef struct {
int *nv;
} NextValType;
NextValType testa (int i) {
NextValType r;
fprintf(stderr,"[testa] i=%d\n",i);
r.nv = NULL;
return r;
}
void testb (int i) {
fprintf(stderr,"[testa] i=%d\n",i);
}
}
```
Results in:
```
> clang++ -c funs.cpp && flang-new test.f90 funs.o && ./a.out
[testa] i=2
[testa] i=-212793808
> g++ -c funs.cpp && gfortran test.f90 funs.o && ./a.out
[testa] i=2
[testa] i=2
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVU2PozgQ_TXFxWpkyiHAgUMnmZxGc1jt7rVlTEHcIgbZJjv971cGktDpmdaOdqRIEVXPz68-XCWd060hKiHdQXqI5OhPvS3l61m-5UlU9fVbCVu-_PgB-HPTSdM-GfqHXcg63RuGPOYxb7VngPnJ-8GBeAY8Ah5b7U9jFav-DHjsusv172mw_SspH4dTBd8mGRVFVSWZ4KISaSLSZJsnMuOi2CiRIHFKc8BilvCg6A8abF-PiiyDLffkfNwUk1s8__DAYPvWyjM7S21my-iIade_qJdKm1qbdjb7t4EA9ywYAXMFWLBAKp7ZN_ru_5bdnwExYRmb0bl6GbxdIc1lBpCpJ8jHo9p4so1UV6ZmNMqHzIZYJGCuA91KxILT56G3fvlYbl-TY7EwLHDjqSU7SdTGBx7cs4vsRrpq1Qs0aH1QcYvhQe2jeDdWth-9NjQdrP6j_F8U9-GWz-S9573SvYI44LrOj7kbZqeSXXcL5fUmf2AgDrcK3e1Bw8cG-7Rlm9G4WA3DJy0LKLRR3ViHbOydr3Ufn0B8Wbzzzd89WcMAcQ-IDLLd2htirKlhzttR-buXhYwxwGdzAXE9kR3edal4x7TyzPGHdx9Ipjrfidc4e-NgzWC18Q1g7nxN1sIkF9LdnMv0wDSIA2BaQ7o3wYX7wHxnsLG5TNn_9tfXrysz-dGa1VWQHda6L72u50L-RPD_VvZw4f3zsfpu7Lxj2vy03OILU2HQAu4Ad-xJsWuTMMAt4Jbd5_B14s2Q_gqIAY8y7sflhT2GgT82P2GCWSFynt-VfKKibXrrrTS_VwQ-JCWqS1EXopARlUmGWIg0SXh0KtMsU0UqG9yQ2tCmyJFETkWTJfl2Uxcy0iVy3PCcb3nB04THPOfVJuEpbxKRFU0CG05nqbs4rKW4t22knRupTDgmiYg6WVHnpvWIGJI9eaeuOES2nHZZNbYONrzTzrs7jde-o_I2RJfmnBaA6q0dB69Ny6RtxzMZ75glRfpCNavemJqnWD-QlVVHt1EcjbYrf23DAh4nyQ7wuMR0KfHfAAAA___VR02p">