https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108349
Bug ID: 108349 Summary: LTO mismatch for __builtin_realloc between glibc and gfortran frontend Product: gcc Version: 13.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: rimvydas.jas at gmail dot com Target Milestone: --- $ cat foo.f90 program foo end program module buffer integer,allocatable :: mpi_ids(:) contains subroutine method(ids) integer,intent(in) :: ids(:) mpi_ids=ids end subroutine end module $ cat bar.c #include "stdlib.h" void bar(void *ptr){ptr = realloc(ptr,6);} $ gfortran -flto foo.f90 bar.c # no warning given $ gfortran -flto bar.c foo.f90 <built-in>: warning: type of ‘__builtin_realloc’ does not match original declaration [-Wlto-type-mismatch] /usr/include/stdlib.h:564:14: note: type mismatch in parameter 1 564 | extern void *realloc (void *__ptr, size_t __size) | ^ /usr/include/stdlib.h:564:14: note: ‘realloc’ was previously declared here /usr/include/stdlib.h:564:14: note: code may be misoptimized unless ‘-fno-strict-aliasing’ is used Why diagnostic is given depending on sources (or objects) order? No diagnostic is provided if type arguments are swapped in gcc/fortran/f95-lang.cc:996