Re: [PATCH] fortran: Fix creation of reference to C_FUNLOC argument [PR117303]

Harald Anlauf <[email protected]>
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <[email protected]>
Hi Kirill,

On 2/2/26 16:05, Kirill Chilikin wrote:
> 
> Dear maintainers,
> 
> The attached patch fixes PR 117303. The reference returned by C_FUNLOC
> is assigned to a variable in the added code. Without that,
> no reference from the calling subprogram to the argument of C_FUNLOC
> was created in the call graph, resulting in an undefined-reference error
> with link-time optimization.
> 
> The patch was tested using with "check-fortran" on a x86_64-pc-linux-gnu
> system. One existing test from gfortran.dg/c_funloc_test_7.f90 failed
> as expected due to code-generation change. The generated code was
> 
>     cfp = (void (*<T6d>) (void)) nocsub;
> 
> but now it became
> 
>       void * D.4685;
>       D.4685 = (void *) nocsub;
>       cfp = (void (*<T6f>) (void)) D.4685;
> 
> The test has been modified in accordance with the changes.
> Another test, gfortran.dg/c_funloc_test_9.f90, has been converted from
> the test case in PR.
> 
>      PR fortran/117303
> 
> gcc/fortran/ChangeLog:
> 
>      * trans-intrinsic.cc (conv_isocbinding_function):
>           Assign the reference returned by C_FUNLOC to a variable.
> 
> gcc/testsuite/ChangeLog:
> 
>      * gfortran.dg/c_funloc_tests_7.f90:
>           Updated test due to changed code generation.
>      * gfortran.dg/c_funloc_tests_9.f90: New test.
> 
> Signed-off-by: Kirill Chilikin <[email protected]>
> ---
> 
> Please see the attached file for the actual patch.
> If accepted, please commit the change as I do not have write access.
> 
> Regards,
> Kirill

this looks good to me, but I will leave 24 h for others to have a
look or comment on it, as I am not too familiar with LTO subtleties.
Will commit then unless someone else beats me to it.

Thanks,
Harald
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.