Generate correct fn specs for some Fortran library functions.
authorThomas Koenig <tkoenig@gcc.gnu.org>
Sat, 28 Nov 2020 11:36:28 +0000 (12:36 +0100)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Sat, 28 Nov 2020 11:37:17 +0000 (12:37 +0100)
commit36ec54aac7da134441c83248e14825381b8d6f17
treef4e6da6e8acbd45a79a2a888475ad57e7c1549b3
parente87559d202d90e614315203f38f9aa2f5881d36e
Generate correct fn specs for some Fortran library functions.

This patch works by generating the correct fn spec from the
actual arguments in specific_intrinsic_symbol, and by passing this
down via gfc_get_extern_function_decl to gfc_get_function_type.
CSHIFT remains to be done.

gcc/fortran/ChangeLog:

PR fortran/97454
* trans-decl.c (gfc_get_extern_function_decl): Add argument
fnspec.
* trans-intrinsic.c (MAX_SPEC_ARG): Define.
(intrinsic_fnspec): New function.
(ADD_CHAR): Define.
(specific_intrinsic_symbol): Adjust comment. Pass
fn spec to gfc_get_extern_function_decl.
(gfc_conv_intrinsic_funcall): Add ANY, ALL, NORM2, PRODUCT
and SUM intrnisic. Add FIXME for cshift et al.
* trans-types.c (gfc_get_function_type): Add fnspec argument,
handle it.
* trans-types.h (gfc_get_function_type): Add optinal fnspec
argument.
* trans.h (gfc_get_extern_function_decl): Likewise.
gcc/fortran/trans-decl.c
gcc/fortran/trans-intrinsic.c
gcc/fortran/trans-types.c
gcc/fortran/trans-types.h
gcc/fortran/trans.h