aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-decl.c
diff options
context:
space:
mode:
authorTobias Burnus <tobias@codesourcery.com>2021-03-23 15:45:36 +0100
committerTobias Burnus <tobias@codesourcery.com>2021-03-23 15:45:36 +0100
commit212f4988f37ccf788c8c72b1dc952980bc9be3b7 (patch)
treef598fe094efce00a0bbd382a79d54287b80656f0 /gcc/fortran/trans-decl.c
parentd7cea7ceff9a2be7436108030c598628c51fba0f (diff)
downloadgcc-212f4988f37ccf788c8c72b1dc952980bc9be3b7.zip
gcc-212f4988f37ccf788c8c72b1dc952980bc9be3b7.tar.gz
gcc-212f4988f37ccf788c8c72b1dc952980bc9be3b7.tar.bz2
Fortran: Fix func decl mismatch [PR93660]
gcc/fortran/ChangeLog: PR fortran/93660 * trans-decl.c (build_function_decl): Add comment; increment hidden_typelist for caf_token/caf_offset. * trans-types.c (gfc_get_function_type): Add comment; add missing caf_token/caf_offset args. gcc/testsuite/ChangeLog: PR fortran/93660 * gfortran.dg/gomp/declare-simd-coarray-lib.f90: New test.
Diffstat (limited to 'gcc/fortran/trans-decl.c')
-rw-r--r--gcc/fortran/trans-decl.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index 6a4ed9b..34a0d49 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -2488,7 +2488,9 @@ build_function_decl (gfc_symbol * sym, bool global)
}
-/* Create the DECL_ARGUMENTS for a procedure. */
+/* Create the DECL_ARGUMENTS for a procedure.
+ NOTE: The arguments added here must match the argument type created by
+ gfc_get_function_type (). */
static void
create_function_arglist (gfc_symbol * sym)
@@ -2807,6 +2809,7 @@ create_function_arglist (gfc_symbol * sym)
DECL_ARG_TYPE (token) = TREE_VALUE (typelist);
TREE_READONLY (token) = 1;
hidden_arglist = chainon (hidden_arglist, token);
+ hidden_typelist = TREE_CHAIN (hidden_typelist);
gfc_finish_decl (token);
offset = build_decl (input_location, PARM_DECL,
@@ -2832,6 +2835,7 @@ create_function_arglist (gfc_symbol * sym)
DECL_ARG_TYPE (offset) = TREE_VALUE (typelist);
TREE_READONLY (offset) = 1;
hidden_arglist = chainon (hidden_arglist, offset);
+ hidden_typelist = TREE_CHAIN (hidden_typelist);
gfc_finish_decl (offset);
}