Based on PR 53667.
a) Currently, FREE() and MALLOC() call via iresolve.c the libgfortran/intrinsic/malloc.c's functions. One should call the builtins instead - the library doesn't do anything different.
b) Passing an integer to a Cray pointer dummy should print a warning - both when the explicit interface is known as well as via gsym.
Cray prints an error: 'The type of the actual argument, "INTEGER", does not match "Cray pointer", the type of the dummy argument.'
But probably printing a warning is better - as the tricks in PR 53667 show: Better to have an integer to a Cray pointer dummy than an integer dummy with an address, which is only later converted to a Cray pointer.
! Compile with: -fcray-pointer
integer(c_intptr_t) :: intptr
pointer (p, i)
integer :: i
end subroutine f
Date: Fri Aug 28 20:46:43 2015
New Revision: 227311
* intrinsic.c (add_functions, add_subroutines): Remove resolution
functions for FREE and MALLOC.
* intrinsic.h (gfc_resolve_malloc, gfc_resolve_free): Remove.
* iresolve.c (gfc_resolve_malloc, gfc_resolve_free): Remove.
* trans-intrinsic.c (conv_intrinsic_free,
gfc_conv_intrinsic_malloc): New functions.
* intrinsics/malloc.c: Adapt comments.