diff mbox series

[Fortran,1/7] Fortran: make some trans* functions static

Message ID 20211024223023.1410274-2-rep.dot.nop@gmail.com
State New
Headers show
Series delete some unused decls, make static | expand

Commit Message

Bernhard Reutner-Fischer Oct. 24, 2021, 10:30 p.m. UTC
From: Bernhard Reutner-Fischer <aldot@gcc.gnu.org>

This makes some trans* functions static and deletes declarations of
functions that either do not exist anymore like gfc_get_function_decl
or that are unused like gfc_check_any_c_kind.

gcc/fortran/ChangeLog:

	* expr.c (is_non_empty_structure_constructor): Make static.
	* gfortran.h (gfc_check_any_c_kind): Delete.
	* match.c (gfc_match_label): Make static.
	* match.h (gfc_match_label): Delete declaration.
	* scanner.c (file_changes_cur, file_changes_count,
	file_changes_allocated): Make static.
	* trans-expr.c (gfc_get_character_len): Make static.
	(gfc_class_len_or_zero_get): Make static.
	(VTAB_GET_FIELD_GEN): Undefine.
	(gfc_get_class_array_ref): Make static.
	(gfc_finish_interface_mapping): Make static.
	* trans-types.c (gfc_check_any_c_kind): Delete.
	(pfunc_type_node, dtype_type_node, gfc_get_ppc_type): Make static.
	* trans-types.h (gfc_get_ppc_type): Delete declaration.
	* trans.c (gfc_msg_wrong_return): Delete.
	* trans.h (gfc_class_len_or_zero_get, gfc_class_vtab_extends_get,
	gfc_vptr_extends_get, gfc_get_class_array_ref, gfc_get_character_len,
	gfc_finish_interface_mapping, gfc_msg_wrong_return,
	gfc_get_function_decl): Delete declaration.
---
 gcc/fortran/expr.c        |  2 +-
 gcc/fortran/gfortran.h    |  1 -
 gcc/fortran/match.c       |  2 +-
 gcc/fortran/match.h       |  1 -
 gcc/fortran/scanner.c     |  4 ++--
 gcc/fortran/trans-expr.c  | 10 +++++-----
 gcc/fortran/trans-types.c | 25 +++----------------------
 gcc/fortran/trans-types.h |  1 -
 gcc/fortran/trans.c       |  1 -
 gcc/fortran/trans.h       | 11 -----------
 10 files changed, 12 insertions(+), 46 deletions(-)

Comments

Thomas Koenig Oct. 25, 2021, 5:47 a.m. UTC | #1
Hi Bernhard,

what you're doing seems a useful clean-up, thanks.

One point for discussion:

> -match
> +static match
>   gfc_match_label (void)

I have generally understood that the gfc_ prefix is for global variables
and functions only.  We do not always adhere to it (also since some
global functions were made static previously), but I think we should
stick to it, unless other people think otherwise :-)

Best regards

	Thomas
Tobias Burnus Oct. 25, 2021, 6:43 a.m. UTC | #2
Hi Thomas,

On 25.10.21 07:47, Thomas Koenig via Fortran wrote:
> what you're doing seems a useful clean-up, thanks.
>
> One point for discussion:
>> -match
>> +static match
>>   gfc_match_label (void)
> I have generally understood that the gfc_ prefix is for global variables
> and functions only.  We do not always adhere to it (also since some
> global functions were made static previously), but I think we should
> stick to it, unless other people think otherwise :-)

I concur – but there is also a good reason for always having a prefix:
It makes it more unlikely that there are name clashes between the
middle/backend end and the FE. – And those should be strictly avoided as
it makes debugging (in the debugger) harder. (And in particular, same
file names should be avoided.)

I think there is also some attempt to avoid same names in multiple FE,
but that's not as strict as long as different binaries are produced and
'git grep' does also show the directory.

For the readability, it could be sometimes useful to know whether a
function is a FE function or not.

Thus, I am not sure whether it is better to always have the prefix or
not – there are arguments for either.

Tobias

-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955
Bernhard Reutner-Fischer Oct. 25, 2021, 8 a.m. UTC | #3
On Mon, 25 Oct 2021 08:43:09 +0200
Tobias Burnus <tobias@codesourcery.com> wrote:

> Hi Thomas,
> 
> On 25.10.21 07:47, Thomas Koenig via Fortran wrote:
> > what you're doing seems a useful clean-up, thanks.
> >
> > One point for discussion:  
> >> -match
> >> +static match
> >>   gfc_match_label (void)  
> > I have generally understood that the gfc_ prefix is for global variables
> > and functions only.  We do not always adhere to it (also since some
> > global functions were made static previously), but I think we should
> > stick to it, unless other people think otherwise :-)  
> 
> I concur – but there is also a good reason for always having a prefix:
> It makes it more unlikely that there are name clashes between the
> middle/backend end and the FE. – And those should be strictly avoided as
> it makes debugging (in the debugger) harder. (And in particular, same
> file names should be avoided.)
> 
> I think there is also some attempt to avoid same names in multiple FE,
> but that's not as strict as long as different binaries are produced and
> 'git grep' does also show the directory.
> 
> For the readability, it could be sometimes useful to know whether a
> function is a FE function or not.
> 
> Thus, I am not sure whether it is better to always have the prefix or
> not – there are arguments for either.

I would put it the other way round:
At least global functions (and variables) should use the gfc_ prefix to
ease debugging and grep.

That said, I deliberately did not rename any of the functions, also to
avoid needless churn.
thanks,
Tobias Burnus Oct. 26, 2021, 9:34 a.m. UTC | #4
On 25.10.21 00:30, Bernhard Reutner-Fischer via Fortran wrote:

> From: Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
>
> This makes some trans* functions static and deletes declarations of
> functions that either do not exist anymore like gfc_get_function_decl
> or that are unused like gfc_check_any_c_kind.
>
> gcc/fortran/ChangeLog:
>       * expr.c (is_non_empty_structure_constructor): Make static.
>       * gfortran.h (gfc_check_any_c_kind): Delete.
>       * match.c (gfc_match_label): Make static.
>       * match.h (gfc_match_label): Delete declaration.
>       * scanner.c (file_changes_cur, file_changes_count,
>       file_changes_allocated): Make static.
>       * trans-expr.c (gfc_get_character_len): Make static.
>       (gfc_class_len_or_zero_get): Make static.
>       (VTAB_GET_FIELD_GEN): Undefine.
>       (gfc_get_class_array_ref): Make static.
>       (gfc_finish_interface_mapping): Make static.
>       * trans-types.c (gfc_check_any_c_kind): Delete.
>       (pfunc_type_node, dtype_type_node, gfc_get_ppc_type): Make static.
>       * trans-types.h (gfc_get_ppc_type): Delete declaration.
>       * trans.c (gfc_msg_wrong_return): Delete.
>       * trans.h (gfc_class_len_or_zero_get, gfc_class_vtab_extends_get,
>       gfc_vptr_extends_get, gfc_get_class_array_ref, gfc_get_character_len,
>       gfc_finish_interface_mapping, gfc_msg_wrong_return,
>       gfc_get_function_decl): Delete declaration.

OK.

Thanks for the cleanup!

Tobias

> ---
>   gcc/fortran/expr.c        |  2 +-
>   gcc/fortran/gfortran.h    |  1 -
>   gcc/fortran/match.c       |  2 +-
>   gcc/fortran/match.h       |  1 -
>   gcc/fortran/scanner.c     |  4 ++--
>   gcc/fortran/trans-expr.c  | 10 +++++-----
>   gcc/fortran/trans-types.c | 25 +++----------------------
>   gcc/fortran/trans-types.h |  1 -
>   gcc/fortran/trans.c       |  1 -
>   gcc/fortran/trans.h       | 11 -----------
>   10 files changed, 12 insertions(+), 46 deletions(-)
>
> diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c
> index b19d3a26c60..4dea840e348 100644
> --- a/gcc/fortran/expr.c
> +++ b/gcc/fortran/expr.c
> @@ -4817,7 +4817,7 @@ gfc_apply_init (gfc_typespec *ts, symbol_attribute *attr, gfc_expr *init)
>   /* Check whether an expression is a structure constructor and whether it has
>      other values than NULL.  */
>
> -bool
> +static bool
>   is_non_empty_structure_constructor (gfc_expr * e)
>   {
>     if (e->expr_type != EXPR_STRUCTURE)
> diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h
> index 66192c07d8c..f7662c59a5d 100644
> --- a/gcc/fortran/gfortran.h
> +++ b/gcc/fortran/gfortran.h
> @@ -3284,7 +3284,6 @@ bool gfc_check_character_range (gfc_char_t, int);
>   extern bool gfc_seen_div0;
>
>   /* trans-types.c */
> -bool gfc_check_any_c_kind (gfc_typespec *);
>   int gfc_validate_kind (bt, int, bool);
>   int gfc_get_int_kind_from_width_isofortranenv (int size);
>   int gfc_get_real_kind_from_width_isofortranenv (int size);
> diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c
> index 53a575e616e..91cde55d7a1 100644
> --- a/gcc/fortran/match.c
> +++ b/gcc/fortran/match.c
> @@ -599,7 +599,7 @@ cleanup:
>      it.  We also make sure the symbol does not refer to another
>      (active) block.  A matched label is pointed to by gfc_new_block.  */
>
> -match
> +static match
>   gfc_match_label (void)
>   {
>     char name[GFC_MAX_SYMBOL_LEN + 1];
> diff --git a/gcc/fortran/match.h b/gcc/fortran/match.h
> index 21e94f79d95..eb9459ea99c 100644
> --- a/gcc/fortran/match.h
> +++ b/gcc/fortran/match.h
> @@ -47,7 +47,6 @@ match gfc_match_space (void);
>   match gfc_match_eos (void);
>   match gfc_match_small_literal_int (int *, int *);
>   match gfc_match_st_label (gfc_st_label **);
> -match gfc_match_label (void);
>   match gfc_match_small_int (int *);
>   match gfc_match_small_int_expr (int *, gfc_expr **);
>   match gfc_match_name (char *);
> diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c
> index 5a450692ba3..69b81ab97f8 100644
> --- a/gcc/fortran/scanner.c
> +++ b/gcc/fortran/scanner.c
> @@ -78,8 +78,8 @@ static struct gfc_file_change
>     gfc_linebuf *lb;
>     int line;
>   } *file_changes;
> -size_t file_changes_cur, file_changes_count;
> -size_t file_changes_allocated;
> +static size_t file_changes_cur, file_changes_count;
> +static size_t file_changes_allocated;
>
>   static gfc_char_t *last_error_char;
>
> diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
> index 2d7f9e0fb91..e7aec3845d3 100644
> --- a/gcc/fortran/trans-expr.c
> +++ b/gcc/fortran/trans-expr.c
> @@ -45,7 +45,7 @@ along with GCC; see the file COPYING3.  If not see
>
>   /* Calculate the number of characters in a string.  */
>
> -tree
> +static tree
>   gfc_get_character_len (tree type)
>   {
>     tree len;
> @@ -278,7 +278,7 @@ gfc_class_len_get (tree decl)
>   /* Try to get the _len component of a class.  When the class is not unlimited
>      poly, i.e. no _len field exists, then return a zero node.  */
>
> -tree
> +static tree
>   gfc_class_len_or_zero_get (tree decl)
>   {
>     tree len;
> @@ -382,7 +382,7 @@ VTAB_GET_FIELD_GEN (def_init, VTABLE_DEF_INIT_FIELD)
>   VTAB_GET_FIELD_GEN (copy, VTABLE_COPY_FIELD)
>   VTAB_GET_FIELD_GEN (final, VTABLE_FINAL_FIELD)
>   VTAB_GET_FIELD_GEN (deallocate, VTABLE_DEALLOCATE_FIELD)
> -
> +#undef VTAB_GET_FIELD_GEN
>
>   /* The size field is returned as an array index type.  Therefore treat
>      it and only it specially.  */
> @@ -1367,7 +1367,7 @@ gfc_conv_class_to_class (gfc_se *parmse, gfc_expr *e, gfc_typespec class_ts,
>   /* Given a class array declaration and an index, returns the address
>      of the referenced element.  */
>
> -tree
> +static tree
>   gfc_get_class_array_ref (tree index, tree class_decl, tree data_comp,
>                        bool unlimited)
>   {
> @@ -4531,7 +4531,7 @@ gfc_add_interface_mapping (gfc_interface_mapping * mapping,
>      the length of each argument, adding any initialization code to PRE and
>      any finalization code to POST.  */
>
> -void
> +static void
>   gfc_finish_interface_mapping (gfc_interface_mapping * mapping,
>                             stmtblock_t * pre, stmtblock_t * post)
>   {
> diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c
> index 42778067dbe..947ab5a099b 100644
> --- a/gcc/fortran/trans-types.c
> +++ b/gcc/fortran/trans-types.c
> @@ -61,7 +61,7 @@ tree pvoid_type_node;
>   tree prvoid_type_node;
>   tree ppvoid_type_node;
>   tree pchar_type_node;
> -tree pfunc_type_node;
> +static tree pfunc_type_node;
>
>   tree logical_type_node;
>   tree logical_true_node;
> @@ -133,7 +133,7 @@ int gfc_size_kind;
>   int gfc_numeric_storage_size;
>   int gfc_character_storage_size;
>
> -tree dtype_type_node = NULL_TREE;
> +static tree dtype_type_node = NULL_TREE;
>
>
>   /* Build the dtype_type_node if necessary.  */
> @@ -175,25 +175,6 @@ tree get_dtype_type_node (void)
>     return dtype_type_node;
>   }
>
> -bool
> -gfc_check_any_c_kind (gfc_typespec *ts)
> -{
> -  int i;
> -
> -  for (i = 0; i < ISOCBINDING_NUMBER; i++)
> -    {
> -      /* Check for any C interoperable kind for the given type/kind in ts.
> -         This can be used after verify_c_interop to make sure that the
> -         Fortran kind being used exists in at least some form for C.  */
> -      if (c_interop_kinds_table[i].f90_type == ts->type &&
> -          c_interop_kinds_table[i].value == ts->kind)
> -        return true;
> -    }
> -
> -  return false;
> -}
> -
> -
>   static int
>   get_real_kind_from_node (tree type)
>   {
> @@ -2470,7 +2451,7 @@ gfc_copy_dt_decls_ifequal (gfc_symbol *from, gfc_symbol *to,
>
>   /* Build a tree node for a procedure pointer component.  */
>
> -tree
> +static tree
>   gfc_get_ppc_type (gfc_component* c)
>   {
>     tree t;
> diff --git a/gcc/fortran/trans-types.h b/gcc/fortran/trans-types.h
> index 15d206b9443..1b43503092b 100644
> --- a/gcc/fortran/trans-types.h
> +++ b/gcc/fortran/trans-types.h
> @@ -117,7 +117,6 @@ int gfc_is_nodesc_array (gfc_symbol *);
>   tree gfc_get_dtype_rank_type (int, tree);
>   tree gfc_get_dtype (tree, int *rank = NULL);
>
> -tree gfc_get_ppc_type (gfc_component *);
>   tree gfc_get_caf_vector_type (int dim);
>   tree gfc_get_caf_reference_type ();
>
> diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c
> index 22f267645e8..a377d0eeb24 100644
> --- a/gcc/fortran/trans.c
> +++ b/gcc/fortran/trans.c
> @@ -45,7 +45,6 @@ along with GCC; see the file COPYING3.  If not see
>   static gfc_file *gfc_current_backend_file;
>
>   const char gfc_msg_fault[] = N_("Array reference out of bounds");
> -const char gfc_msg_wrong_return[] = N_("Incorrect function return value");
>
>
>   /* Return a location_t suitable for 'tree' for a gfortran locus.  The way the
> diff --git a/gcc/fortran/trans.h b/gcc/fortran/trans.h
> index 7ec4ca53a2c..0d4eed20d20 100644
> --- a/gcc/fortran/trans.h
> +++ b/gcc/fortran/trans.h
> @@ -425,7 +425,6 @@ tree gfc_class_set_static_fields (tree, tree, tree);
>   tree gfc_class_data_get (tree);
>   tree gfc_class_vptr_get (tree);
>   tree gfc_class_len_get (tree);
> -tree gfc_class_len_or_zero_get (tree);
>   tree gfc_resize_class_size_with_len (stmtblock_t *, tree, tree);
>   gfc_expr * gfc_find_and_cut_at_last_class_ref (gfc_expr *, bool is_mold = false,
>                                              gfc_typespec **ts = NULL);
> @@ -433,14 +432,12 @@ gfc_expr * gfc_find_and_cut_at_last_class_ref (gfc_expr *, bool is_mold = false,
>      available.  */
>   tree gfc_class_vtab_hash_get (tree);
>   tree gfc_class_vtab_size_get (tree);
> -tree gfc_class_vtab_extends_get (tree);
>   tree gfc_class_vtab_def_init_get (tree);
>   tree gfc_class_vtab_copy_get (tree);
>   tree gfc_class_vtab_final_get (tree);
>   /* Get an accessor to the vtab's * field, when a vptr handle is present.  */
>   tree gfc_vptr_hash_get (tree);
>   tree gfc_vptr_size_get (tree);
> -tree gfc_vptr_extends_get (tree);
>   tree gfc_vptr_def_init_get (tree);
>   tree gfc_vptr_copy_get (tree);
>   tree gfc_vptr_final_get (tree);
> @@ -450,7 +447,6 @@ void gfc_reset_len (stmtblock_t *, gfc_expr *);
>   tree gfc_get_class_from_gfc_expr (gfc_expr *);
>   tree gfc_get_class_from_expr (tree);
>   tree gfc_get_vptr_from_expr (tree);
> -tree gfc_get_class_array_ref (tree, tree, tree, bool);
>   tree gfc_copy_class_to_class (tree, tree, tree, bool);
>   bool gfc_add_finalizer_call (stmtblock_t *, gfc_expr *);
>   bool gfc_add_comp_finalizer_call (stmtblock_t *, tree, gfc_component *, bool);
> @@ -509,7 +505,6 @@ void gfc_conv_expr_type (gfc_se * se, gfc_expr *, tree);
>
>
>   /* trans-expr.c */
> -tree gfc_get_character_len (tree);
>   tree gfc_get_character_len_in_bytes (tree);
>   tree gfc_conv_scalar_to_descriptor (gfc_se *, tree, symbol_attribute);
>   tree gfc_get_ultimate_alloc_ptr_comps_caf_token (gfc_se *, gfc_expr *);
> @@ -621,9 +616,6 @@ tree gfc_get_extern_function_decl (gfc_symbol *,
>                                  gfc_actual_arglist *args = NULL,
>                                  const char *fnspec = NULL);
>
> -/* Return the decl for a function.  */
> -tree gfc_get_function_decl (gfc_symbol *);
> -
>   /* Build an ADDR_EXPR.  */
>   tree gfc_build_addr_expr (tree, tree);
>
> @@ -1171,15 +1163,12 @@ void gfc_init_interface_mapping (gfc_interface_mapping *);
>   void gfc_free_interface_mapping (gfc_interface_mapping *);
>   void gfc_add_interface_mapping (gfc_interface_mapping *,
>                               gfc_symbol *, gfc_se *, gfc_expr *);
> -void gfc_finish_interface_mapping (gfc_interface_mapping *,
> -                                stmtblock_t *, stmtblock_t *);
>   void gfc_apply_interface_mapping (gfc_interface_mapping *,
>                                 gfc_se *, gfc_expr *);
>
>
>   /* Standard error messages used in all the trans-*.c files.  */
>   extern const char gfc_msg_fault[];
> -extern const char gfc_msg_wrong_return[];
>
>   #define OMPWS_WORKSHARE_FLAG        1       /* Set if in a workshare construct.  */
>   #define OMPWS_CURR_SINGLEUNIT       2       /* Set if current gfc_code in workshare
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955
diff mbox series

Patch

diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c
index b19d3a26c60..4dea840e348 100644
--- a/gcc/fortran/expr.c
+++ b/gcc/fortran/expr.c
@@ -4817,7 +4817,7 @@  gfc_apply_init (gfc_typespec *ts, symbol_attribute *attr, gfc_expr *init)
 /* Check whether an expression is a structure constructor and whether it has
    other values than NULL.  */
 
-bool
+static bool
 is_non_empty_structure_constructor (gfc_expr * e)
 {
   if (e->expr_type != EXPR_STRUCTURE)
diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h
index 66192c07d8c..f7662c59a5d 100644
--- a/gcc/fortran/gfortran.h
+++ b/gcc/fortran/gfortran.h
@@ -3284,7 +3284,6 @@  bool gfc_check_character_range (gfc_char_t, int);
 extern bool gfc_seen_div0;
 
 /* trans-types.c */
-bool gfc_check_any_c_kind (gfc_typespec *);
 int gfc_validate_kind (bt, int, bool);
 int gfc_get_int_kind_from_width_isofortranenv (int size);
 int gfc_get_real_kind_from_width_isofortranenv (int size);
diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c
index 53a575e616e..91cde55d7a1 100644
--- a/gcc/fortran/match.c
+++ b/gcc/fortran/match.c
@@ -599,7 +599,7 @@  cleanup:
    it.  We also make sure the symbol does not refer to another
    (active) block.  A matched label is pointed to by gfc_new_block.  */
 
-match
+static match
 gfc_match_label (void)
 {
   char name[GFC_MAX_SYMBOL_LEN + 1];
diff --git a/gcc/fortran/match.h b/gcc/fortran/match.h
index 21e94f79d95..eb9459ea99c 100644
--- a/gcc/fortran/match.h
+++ b/gcc/fortran/match.h
@@ -47,7 +47,6 @@  match gfc_match_space (void);
 match gfc_match_eos (void);
 match gfc_match_small_literal_int (int *, int *);
 match gfc_match_st_label (gfc_st_label **);
-match gfc_match_label (void);
 match gfc_match_small_int (int *);
 match gfc_match_small_int_expr (int *, gfc_expr **);
 match gfc_match_name (char *);
diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c
index 5a450692ba3..69b81ab97f8 100644
--- a/gcc/fortran/scanner.c
+++ b/gcc/fortran/scanner.c
@@ -78,8 +78,8 @@  static struct gfc_file_change
   gfc_linebuf *lb;
   int line;
 } *file_changes;
-size_t file_changes_cur, file_changes_count;
-size_t file_changes_allocated;
+static size_t file_changes_cur, file_changes_count;
+static size_t file_changes_allocated;
 
 static gfc_char_t *last_error_char;
 
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index 2d7f9e0fb91..e7aec3845d3 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -45,7 +45,7 @@  along with GCC; see the file COPYING3.  If not see
 
 /* Calculate the number of characters in a string.  */
 
-tree
+static tree
 gfc_get_character_len (tree type)
 {
   tree len;
@@ -278,7 +278,7 @@  gfc_class_len_get (tree decl)
 /* Try to get the _len component of a class.  When the class is not unlimited
    poly, i.e. no _len field exists, then return a zero node.  */
 
-tree
+static tree
 gfc_class_len_or_zero_get (tree decl)
 {
   tree len;
@@ -382,7 +382,7 @@  VTAB_GET_FIELD_GEN (def_init, VTABLE_DEF_INIT_FIELD)
 VTAB_GET_FIELD_GEN (copy, VTABLE_COPY_FIELD)
 VTAB_GET_FIELD_GEN (final, VTABLE_FINAL_FIELD)
 VTAB_GET_FIELD_GEN (deallocate, VTABLE_DEALLOCATE_FIELD)
-
+#undef VTAB_GET_FIELD_GEN
 
 /* The size field is returned as an array index type.  Therefore treat
    it and only it specially.  */
@@ -1367,7 +1367,7 @@  gfc_conv_class_to_class (gfc_se *parmse, gfc_expr *e, gfc_typespec class_ts,
 /* Given a class array declaration and an index, returns the address
    of the referenced element.  */
 
-tree
+static tree
 gfc_get_class_array_ref (tree index, tree class_decl, tree data_comp,
 			 bool unlimited)
 {
@@ -4531,7 +4531,7 @@  gfc_add_interface_mapping (gfc_interface_mapping * mapping,
    the length of each argument, adding any initialization code to PRE and
    any finalization code to POST.  */
 
-void
+static void
 gfc_finish_interface_mapping (gfc_interface_mapping * mapping,
 			      stmtblock_t * pre, stmtblock_t * post)
 {
diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c
index 42778067dbe..947ab5a099b 100644
--- a/gcc/fortran/trans-types.c
+++ b/gcc/fortran/trans-types.c
@@ -61,7 +61,7 @@  tree pvoid_type_node;
 tree prvoid_type_node;
 tree ppvoid_type_node;
 tree pchar_type_node;
-tree pfunc_type_node;
+static tree pfunc_type_node;
 
 tree logical_type_node;
 tree logical_true_node;
@@ -133,7 +133,7 @@  int gfc_size_kind;
 int gfc_numeric_storage_size;
 int gfc_character_storage_size;
 
-tree dtype_type_node = NULL_TREE;
+static tree dtype_type_node = NULL_TREE;
 
 
 /* Build the dtype_type_node if necessary.  */
@@ -175,25 +175,6 @@  tree get_dtype_type_node (void)
   return dtype_type_node;
 }
 
-bool
-gfc_check_any_c_kind (gfc_typespec *ts)
-{
-  int i;
-
-  for (i = 0; i < ISOCBINDING_NUMBER; i++)
-    {
-      /* Check for any C interoperable kind for the given type/kind in ts.
-         This can be used after verify_c_interop to make sure that the
-         Fortran kind being used exists in at least some form for C.  */
-      if (c_interop_kinds_table[i].f90_type == ts->type &&
-          c_interop_kinds_table[i].value == ts->kind)
-        return true;
-    }
-
-  return false;
-}
-
-
 static int
 get_real_kind_from_node (tree type)
 {
@@ -2470,7 +2451,7 @@  gfc_copy_dt_decls_ifequal (gfc_symbol *from, gfc_symbol *to,
 
 /* Build a tree node for a procedure pointer component.  */
 
-tree
+static tree
 gfc_get_ppc_type (gfc_component* c)
 {
   tree t;
diff --git a/gcc/fortran/trans-types.h b/gcc/fortran/trans-types.h
index 15d206b9443..1b43503092b 100644
--- a/gcc/fortran/trans-types.h
+++ b/gcc/fortran/trans-types.h
@@ -117,7 +117,6 @@  int gfc_is_nodesc_array (gfc_symbol *);
 tree gfc_get_dtype_rank_type (int, tree);
 tree gfc_get_dtype (tree, int *rank = NULL);
 
-tree gfc_get_ppc_type (gfc_component *);
 tree gfc_get_caf_vector_type (int dim);
 tree gfc_get_caf_reference_type ();
 
diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c
index 22f267645e8..a377d0eeb24 100644
--- a/gcc/fortran/trans.c
+++ b/gcc/fortran/trans.c
@@ -45,7 +45,6 @@  along with GCC; see the file COPYING3.  If not see
 static gfc_file *gfc_current_backend_file;
 
 const char gfc_msg_fault[] = N_("Array reference out of bounds");
-const char gfc_msg_wrong_return[] = N_("Incorrect function return value");
 
 
 /* Return a location_t suitable for 'tree' for a gfortran locus.  The way the
diff --git a/gcc/fortran/trans.h b/gcc/fortran/trans.h
index 7ec4ca53a2c..0d4eed20d20 100644
--- a/gcc/fortran/trans.h
+++ b/gcc/fortran/trans.h
@@ -425,7 +425,6 @@  tree gfc_class_set_static_fields (tree, tree, tree);
 tree gfc_class_data_get (tree);
 tree gfc_class_vptr_get (tree);
 tree gfc_class_len_get (tree);
-tree gfc_class_len_or_zero_get (tree);
 tree gfc_resize_class_size_with_len (stmtblock_t *, tree, tree);
 gfc_expr * gfc_find_and_cut_at_last_class_ref (gfc_expr *, bool is_mold = false,
 					       gfc_typespec **ts = NULL);
@@ -433,14 +432,12 @@  gfc_expr * gfc_find_and_cut_at_last_class_ref (gfc_expr *, bool is_mold = false,
    available.  */
 tree gfc_class_vtab_hash_get (tree);
 tree gfc_class_vtab_size_get (tree);
-tree gfc_class_vtab_extends_get (tree);
 tree gfc_class_vtab_def_init_get (tree);
 tree gfc_class_vtab_copy_get (tree);
 tree gfc_class_vtab_final_get (tree);
 /* Get an accessor to the vtab's * field, when a vptr handle is present.  */
 tree gfc_vptr_hash_get (tree);
 tree gfc_vptr_size_get (tree);
-tree gfc_vptr_extends_get (tree);
 tree gfc_vptr_def_init_get (tree);
 tree gfc_vptr_copy_get (tree);
 tree gfc_vptr_final_get (tree);
@@ -450,7 +447,6 @@  void gfc_reset_len (stmtblock_t *, gfc_expr *);
 tree gfc_get_class_from_gfc_expr (gfc_expr *);
 tree gfc_get_class_from_expr (tree);
 tree gfc_get_vptr_from_expr (tree);
-tree gfc_get_class_array_ref (tree, tree, tree, bool);
 tree gfc_copy_class_to_class (tree, tree, tree, bool);
 bool gfc_add_finalizer_call (stmtblock_t *, gfc_expr *);
 bool gfc_add_comp_finalizer_call (stmtblock_t *, tree, gfc_component *, bool);
@@ -509,7 +505,6 @@  void gfc_conv_expr_type (gfc_se * se, gfc_expr *, tree);
 
 
 /* trans-expr.c */
-tree gfc_get_character_len (tree);
 tree gfc_get_character_len_in_bytes (tree);
 tree gfc_conv_scalar_to_descriptor (gfc_se *, tree, symbol_attribute);
 tree gfc_get_ultimate_alloc_ptr_comps_caf_token (gfc_se *, gfc_expr *);
@@ -621,9 +616,6 @@  tree gfc_get_extern_function_decl (gfc_symbol *,
 				   gfc_actual_arglist *args = NULL,
 				   const char *fnspec = NULL);
 
-/* Return the decl for a function.  */
-tree gfc_get_function_decl (gfc_symbol *);
-
 /* Build an ADDR_EXPR.  */
 tree gfc_build_addr_expr (tree, tree);
 
@@ -1171,15 +1163,12 @@  void gfc_init_interface_mapping (gfc_interface_mapping *);
 void gfc_free_interface_mapping (gfc_interface_mapping *);
 void gfc_add_interface_mapping (gfc_interface_mapping *,
 				gfc_symbol *, gfc_se *, gfc_expr *);
-void gfc_finish_interface_mapping (gfc_interface_mapping *,
-				   stmtblock_t *, stmtblock_t *);
 void gfc_apply_interface_mapping (gfc_interface_mapping *,
 				  gfc_se *, gfc_expr *);
 
 
 /* Standard error messages used in all the trans-*.c files.  */
 extern const char gfc_msg_fault[];
-extern const char gfc_msg_wrong_return[];
 
 #define OMPWS_WORKSHARE_FLAG	1	/* Set if in a workshare construct.  */
 #define OMPWS_CURR_SINGLEUNIT	2	/* Set if current gfc_code in workshare