diff mbox series

[v1] gcc/: Rename array_type_nelts() => array_type_nelts_minus_one()

Message ID 20240729151517.356291-1-alx@kernel.org
State New
Headers show
Series [v1] gcc/: Rename array_type_nelts() => array_type_nelts_minus_one() | expand

Commit Message

Alejandro Colomar July 29, 2024, 3:15 p.m. UTC
The old name was misleading.

While at it, also rename some temporary variables that are used with
this function, for consistency.

Link: https://inbox.sourceware.org/gcc-patches/9fffd80-dca-2c7e-14b-6c9b509a7215@redhat.com/T/#m2f661c67c8f7b2c405c8c7fc3152dd85dc729120
Cc: Gabriel Ravier <gabravier@gmail.com>
Cc: Martin Uecker <uecker@tugraz.at>
Cc: Joseph Myers <josmyers@redhat.com>
Cc: Xavier Del Campo Romero <xavi.dcr@tutanota.com>

gcc/ChangeLog:

	* tree.cc (array_type_nelts): Rename function ...
	(array_type_nelts_minus_one): ... to this name.  The old name
	was misleading.
	* tree.h: Likewise.
	* c/c-decl.cc: Likewise.
	* c/c-fold.cc: Likewise.
	* config/aarch64/aarch64.cc: Likewise.
	* config/i386/i386.cc: Likewise.
	* cp/decl.cc: Likewise.
	* cp/init.cc: Likewise.
	* cp/lambda.cc: Likewise.
	* cp/tree.cc: Likewise.
	* expr.cc: Likewise.
	* fortran/trans-array.cc: Likewise.
	* fortran/trans-openmp.cc: Likewise.
	* rust/backend/rust-tree.cc: Likewise.

Suggested-by: Richard Biener <richard.guenther@gmail.com>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
---
Range-diff against v0:
-:  ----------- > 1:  82efbc3c540 gcc/: Rename array_type_nelts() => array_type_nelts_minus_one()

 gcc/c/c-decl.cc               | 10 +++++-----
 gcc/c/c-fold.cc               |  7 ++++---
 gcc/config/aarch64/aarch64.cc |  2 +-
 gcc/config/i386/i386.cc       |  2 +-
 gcc/cp/decl.cc                |  2 +-
 gcc/cp/init.cc                |  8 ++++----
 gcc/cp/lambda.cc              |  3 ++-
 gcc/cp/tree.cc                |  2 +-
 gcc/expr.cc                   |  8 ++++----
 gcc/fortran/trans-array.cc    |  2 +-
 gcc/fortran/trans-openmp.cc   |  4 ++--
 gcc/rust/backend/rust-tree.cc |  2 +-
 gcc/tree.cc                   |  4 ++--
 gcc/tree.h                    |  2 +-
 14 files changed, 30 insertions(+), 28 deletions(-)

Comments

Richard Biener July 30, 2024, 10:22 a.m. UTC | #1
On Mon, Jul 29, 2024 at 5:15 PM Alejandro Colomar <alx@kernel.org> wrote:
>
> The old name was misleading.
>
> While at it, also rename some temporary variables that are used with
> this function, for consistency.
>
> Link: https://inbox.sourceware.org/gcc-patches/9fffd80-dca-2c7e-14b-6c9b509a7215@redhat.com/T/#m2f661c67c8f7b2c405c8c7fc3152dd85dc729120
> Cc: Gabriel Ravier <gabravier@gmail.com>
> Cc: Martin Uecker <uecker@tugraz.at>
> Cc: Joseph Myers <josmyers@redhat.com>
> Cc: Xavier Del Campo Romero <xavi.dcr@tutanota.com>
>
> gcc/ChangeLog:
>
>         * tree.cc (array_type_nelts): Rename function ...
>         (array_type_nelts_minus_one): ... to this name.  The old name
>         was misleading.
>         * tree.h: Likewise.
>         * c/c-decl.cc: Likewise.
>         * c/c-fold.cc: Likewise.

This and the cp/ and fortran/ and rust/ entries below have different ChangeLog
files and thus need not be prefixed but need

gcc/cp/ChangeLog:

etc.

The changes look good to me, please leave the frontend maintainers time to
chime in.  Also Jakub had reservations with the renaming because of
branch maintainance.  I think if that proves an issue we could backport the
renaming as well, or make sure that array_type_nelts is not re-introduced
with the same name but different semantics.

Richard.

>         * config/aarch64/aarch64.cc: Likewise.
>         * config/i386/i386.cc: Likewise.
>         * cp/decl.cc: Likewise.
>         * cp/init.cc: Likewise.
>         * cp/lambda.cc: Likewise.
>         * cp/tree.cc: Likewise.
>         * expr.cc: Likewise.
>         * fortran/trans-array.cc: Likewise.
>         * fortran/trans-openmp.cc: Likewise.
>         * rust/backend/rust-tree.cc: Likewise.
>
> Suggested-by: Richard Biener <richard.guenther@gmail.com>
> Signed-off-by: Alejandro Colomar <alx@kernel.org>
> ---
> Range-diff against v0:
> -:  ----------- > 1:  82efbc3c540 gcc/: Rename array_type_nelts() => array_type_nelts_minus_one()
>
>  gcc/c/c-decl.cc               | 10 +++++-----
>  gcc/c/c-fold.cc               |  7 ++++---
>  gcc/config/aarch64/aarch64.cc |  2 +-
>  gcc/config/i386/i386.cc       |  2 +-
>  gcc/cp/decl.cc                |  2 +-
>  gcc/cp/init.cc                |  8 ++++----
>  gcc/cp/lambda.cc              |  3 ++-
>  gcc/cp/tree.cc                |  2 +-
>  gcc/expr.cc                   |  8 ++++----
>  gcc/fortran/trans-array.cc    |  2 +-
>  gcc/fortran/trans-openmp.cc   |  4 ++--
>  gcc/rust/backend/rust-tree.cc |  2 +-
>  gcc/tree.cc                   |  4 ++--
>  gcc/tree.h                    |  2 +-
>  14 files changed, 30 insertions(+), 28 deletions(-)
>
> diff --git a/gcc/c/c-decl.cc b/gcc/c/c-decl.cc
> index 97f1d346835..4dced430d1f 100644
> --- a/gcc/c/c-decl.cc
> +++ b/gcc/c/c-decl.cc
> @@ -5309,7 +5309,7 @@ one_element_array_type_p (const_tree type)
>  {
>    if (TREE_CODE (type) != ARRAY_TYPE)
>      return false;
> -  return integer_zerop (array_type_nelts (type));
> +  return integer_zerop (array_type_nelts_minus_one (type));
>  }
>
>  /* Determine whether TYPE is a zero-length array type "[0]".  */
> @@ -6257,15 +6257,15 @@ get_parm_array_spec (const struct c_parm *parm, tree attrs)
>           for (tree type = parm->specs->type; TREE_CODE (type) == ARRAY_TYPE;
>                type = TREE_TYPE (type))
>             {
> -             tree nelts = array_type_nelts (type);
> -             if (error_operand_p (nelts))
> +             tree nelts_minus_one = array_type_nelts_minus_one (type);
> +             if (error_operand_p (nelts_minus_one))
>                 return attrs;
> -             if (TREE_CODE (nelts) != INTEGER_CST)
> +             if (TREE_CODE (nelts_minus_one) != INTEGER_CST)
>                 {
>                   /* Each variable VLA bound is represented by the dollar
>                      sign.  */
>                   spec += "$";
> -                 tpbnds = tree_cons (NULL_TREE, nelts, tpbnds);
> +                 tpbnds = tree_cons (NULL_TREE, nelts_minus_one, tpbnds);
>                 }
>             }
>           tpbnds = nreverse (tpbnds);
> diff --git a/gcc/c/c-fold.cc b/gcc/c/c-fold.cc
> index 57b67c74bd8..9ea174f79c4 100644
> --- a/gcc/c/c-fold.cc
> +++ b/gcc/c/c-fold.cc
> @@ -73,11 +73,12 @@ c_fold_array_ref (tree type, tree ary, tree index)
>    unsigned elem_nchars = (TYPE_PRECISION (elem_type)
>                           / TYPE_PRECISION (char_type_node));
>    unsigned len = (unsigned) TREE_STRING_LENGTH (ary) / elem_nchars;
> -  tree nelts = array_type_nelts (TREE_TYPE (ary));
> +  tree nelts_minus_one = array_type_nelts_minus_one (TREE_TYPE (ary));
>    bool dummy1 = true, dummy2 = true;
> -  nelts = c_fully_fold_internal (nelts, true, &dummy1, &dummy2, false, false);
> +  nelts_minus_one = c_fully_fold_internal (nelts_minus_one, true, &dummy1,
> +                                          &dummy2, false, false);
>    unsigned HOST_WIDE_INT i = tree_to_uhwi (index);
> -  if (!tree_int_cst_le (index, nelts)
> +  if (!tree_int_cst_le (index, nelts_minus_one)
>        || i >= len
>        || i + elem_nchars > len)
>      return NULL_TREE;
> diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
> index 0d41a193ec1..eaef2a0e985 100644
> --- a/gcc/config/aarch64/aarch64.cc
> +++ b/gcc/config/aarch64/aarch64.cc
> @@ -1082,7 +1082,7 @@ pure_scalable_type_info::analyze_array (const_tree type)
>
>    /* An array of unknown, flexible or variable length will be passed and
>       returned by reference whatever we do.  */
> -  tree nelts_minus_one = array_type_nelts (type);
> +  tree nelts_minus_one = array_type_nelts_minus_one (type);
>    if (!tree_fits_uhwi_p (nelts_minus_one))
>      return DOESNT_MATTER;
>
> diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc
> index 9c2ebe74fc9..298d8c9131a 100644
> --- a/gcc/config/i386/i386.cc
> +++ b/gcc/config/i386/i386.cc
> @@ -24519,7 +24519,7 @@ ix86_canonical_va_list_type (tree type)
>         return ms_va_list_type_node;
>
>        if ((TREE_CODE (type) == ARRAY_TYPE
> -          && integer_zerop (array_type_nelts (type)))
> +          && integer_zerop (array_type_nelts_minus_one (type)))
>           || POINTER_TYPE_P (type))
>         {
>           tree elem_type = TREE_TYPE (type);
> diff --git a/gcc/cp/decl.cc b/gcc/cp/decl.cc
> index e7bb4fa3089..fc3e28c4dec 100644
> --- a/gcc/cp/decl.cc
> +++ b/gcc/cp/decl.cc
> @@ -6936,7 +6936,7 @@ reshape_init_array (tree type, reshape_iter *d, tree first_initializer_p,
>    gcc_assert (TREE_CODE (type) == ARRAY_TYPE);
>
>    if (TYPE_DOMAIN (type))
> -    max_index = array_type_nelts (type);
> +    max_index = array_type_nelts_minus_one (type);
>
>    return reshape_init_array_1 (TREE_TYPE (type), max_index, d,
>                                first_initializer_p, complain);
> diff --git a/gcc/cp/init.cc b/gcc/cp/init.cc
> index e9561c146d7..4558151b4c2 100644
> --- a/gcc/cp/init.cc
> +++ b/gcc/cp/init.cc
> @@ -260,7 +260,7 @@ build_zero_init_1 (tree type, tree nelts, bool static_storage_p,
>        else if (TYPE_DOMAIN (type) == NULL_TREE)
>         return NULL_TREE;
>        else
> -       max_index = array_type_nelts (type);
> +       max_index = array_type_nelts_minus_one (type);
>
>        /* If we have an error_mark here, we should just return error mark
>          as we don't know the size of the array yet.  */
> @@ -471,7 +471,7 @@ build_value_init_noctor (tree type, tsubst_flags_t complain)
>        vec<constructor_elt, va_gc> *v = NULL;
>
>        /* Iterate over the array elements, building initializations.  */
> -      tree max_index = array_type_nelts (type);
> +      tree max_index = array_type_nelts_minus_one (type);
>
>        /* If we have an error_mark here, we should just return error mark
>          as we don't know the size of the array yet.  */
> @@ -4516,7 +4516,7 @@ build_vec_init (tree base, tree maxindex, tree init,
>                     : location_of (base));
>
>    if (TREE_CODE (atype) == ARRAY_TYPE && TYPE_DOMAIN (atype))
> -    maxindex = array_type_nelts (atype);
> +    maxindex = array_type_nelts_minus_one (atype);
>
>    if (maxindex == NULL_TREE || maxindex == error_mark_node)
>      return error_mark_node;
> @@ -5172,7 +5172,7 @@ build_delete (location_t loc, tree otype, tree addr,
>             error_at (loc, "unknown array size in delete");
>           return error_mark_node;
>         }
> -      return build_vec_delete (loc, addr, array_type_nelts (type),
> +      return build_vec_delete (loc, addr, array_type_nelts_minus_one (type),
>                                auto_delete, use_global_delete, complain);
>      }
>
> diff --git a/gcc/cp/lambda.cc b/gcc/cp/lambda.cc
> index 0770417810e..065113bc122 100644
> --- a/gcc/cp/lambda.cc
> +++ b/gcc/cp/lambda.cc
> @@ -556,7 +556,8 @@ add_capture (tree lambda, tree id, tree orig_init, bool by_reference_p,
>                                      integer_zero_node, tf_warning_or_error);
>        initializer = build_constructor_va (init_list_type_node, 2,
>                                           NULL_TREE, build_address (elt),
> -                                         NULL_TREE, array_type_nelts (type));
> +                                         NULL_TREE,
> +                                         array_type_nelts_minus_one (type));
>        type = vla_capture_type (type);
>      }
>    else if (!dependent_type_p (type)
> diff --git a/gcc/cp/tree.cc b/gcc/cp/tree.cc
> index dfd4a3a948b..3baeb8fa252 100644
> --- a/gcc/cp/tree.cc
> +++ b/gcc/cp/tree.cc
> @@ -3080,7 +3080,7 @@ array_type_nelts_top (tree type)
>  {
>    return fold_build2_loc (input_location,
>                       PLUS_EXPR, sizetype,
> -                     array_type_nelts (type),
> +                     array_type_nelts_minus_one (type),
>                       size_one_node);
>  }
>
> diff --git a/gcc/expr.cc b/gcc/expr.cc
> index ffbac513692..cba8b365856 100644
> --- a/gcc/expr.cc
> +++ b/gcc/expr.cc
> @@ -6970,14 +6970,14 @@ count_type_elements (const_tree type, bool for_ctor_p)
>      {
>      case ARRAY_TYPE:
>        {
> -       tree nelts;
> +       tree nelts_minus_one;
>
> -       nelts = array_type_nelts (type);
> -       if (nelts && tree_fits_uhwi_p (nelts))
> +       nelts_minus_one = array_type_nelts_minus_one (type);
> +       if (nelts_minus_one && tree_fits_uhwi_p (nelts_minus_one))
>           {
>             unsigned HOST_WIDE_INT n;
>
> -           n = tree_to_uhwi (nelts) + 1;
> +           n = tree_to_uhwi (nelts_minus_one) + 1;
>             if (n == 0 || for_ctor_p)
>               return n;
>             else
> diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc
> index 140d933e45d..b7927bcdf01 100644
> --- a/gcc/fortran/trans-array.cc
> +++ b/gcc/fortran/trans-array.cc
> @@ -9572,7 +9572,7 @@ structure_alloc_comps (gfc_symbol * der_type, tree decl, tree dest,
>        else
>         {
>           /*  Otherwise use the TYPE_DOMAIN information.  */
> -         tmp = array_type_nelts (decl_type);
> +         tmp = array_type_nelts_minus_one (decl_type);
>           tmp = fold_convert (gfc_array_index_type, tmp);
>         }
>
> diff --git a/gcc/fortran/trans-openmp.cc b/gcc/fortran/trans-openmp.cc
> index df1bf144e23..14cd2f9fad7 100644
> --- a/gcc/fortran/trans-openmp.cc
> +++ b/gcc/fortran/trans-openmp.cc
> @@ -582,7 +582,7 @@ gfc_walk_alloc_comps (tree decl, tree dest, tree var,
>               tem = size_binop (MINUS_EXPR, tem, size_one_node);
>             }
>           else
> -           tem = array_type_nelts (type);
> +           tem = array_type_nelts_minus_one (type);
>           tem = fold_convert (gfc_array_index_type, tem);
>         }
>
> @@ -1309,7 +1309,7 @@ gfc_omp_clause_linear_ctor (tree clause, tree dest, tree src, tree add)
>           nelems = size_binop (MINUS_EXPR, nelems, size_one_node);
>         }
>        else
> -       nelems = array_type_nelts (type);
> +       nelems = array_type_nelts_minus_one (type);
>        nelems = fold_convert (gfc_array_index_type, nelems);
>
>        gfc_omp_linear_clause_add_loop (&block, dest, src, add, nelems);
> diff --git a/gcc/rust/backend/rust-tree.cc b/gcc/rust/backend/rust-tree.cc
> index 2a5ffcbf895..a2c12204667 100644
> --- a/gcc/rust/backend/rust-tree.cc
> +++ b/gcc/rust/backend/rust-tree.cc
> @@ -869,7 +869,7 @@ tree
>  array_type_nelts_top (tree type)
>  {
>    return fold_build2_loc (input_location, PLUS_EXPR, sizetype,
> -                         array_type_nelts (type), size_one_node);
> +                         array_type_nelts_minus_one (type), size_one_node);
>  }
>
>  // forked from gcc/cp/tree.cc builtin_valid_in_constant_expr_p
> diff --git a/gcc/tree.cc b/gcc/tree.cc
> index 2d2d5b6db6e..dcaccc4c362 100644
> --- a/gcc/tree.cc
> +++ b/gcc/tree.cc
> @@ -3698,7 +3698,7 @@ int_byte_position (const_tree field)
>     ARRAY_TYPE) minus one.  This counts only elements of the top array.  */
>
>  tree
> -array_type_nelts (const_tree type)
> +array_type_nelts_minus_one (const_tree type)
>  {
>    tree index_type, min, max;
>
> @@ -14797,7 +14797,7 @@ is_empty_type (const_tree type)
>        return true;
>      }
>    else if (TREE_CODE (type) == ARRAY_TYPE)
> -    return (integer_minus_onep (array_type_nelts (type))
> +    return (integer_minus_onep (array_type_nelts_minus_one (type))
>             || TYPE_DOMAIN (type) == NULL_TREE
>             || is_empty_type (TREE_TYPE (type)));
>    return false;
> diff --git a/gcc/tree.h b/gcc/tree.h
> index 28e8e71b036..fdddbcf408e 100644
> --- a/gcc/tree.h
> +++ b/gcc/tree.h
> @@ -4921,7 +4921,7 @@ extern tree build_method_type_directly (tree, tree, tree);
>  extern tree build_method_type (tree, tree);
>  extern tree build_offset_type (tree, tree);
>  extern tree build_complex_type (tree, bool named = false);
> -extern tree array_type_nelts (const_tree);
> +extern tree array_type_nelts_minus_one (const_tree);
>
>  extern tree value_member (tree, tree);
>  extern tree purpose_member (const_tree, tree);
> --
> 2.45.2
>
Jakub Jelinek July 30, 2024, 10:26 a.m. UTC | #2
On Tue, Jul 30, 2024 at 12:22:01PM +0200, Richard Biener wrote:
> On Mon, Jul 29, 2024 at 5:15 PM Alejandro Colomar <alx@kernel.org> wrote:
> >
> > The old name was misleading.
> >
> > While at it, also rename some temporary variables that are used with
> > this function, for consistency.
> >
> > Link: https://inbox.sourceware.org/gcc-patches/9fffd80-dca-2c7e-14b-6c9b509a7215@redhat.com/T/#m2f661c67c8f7b2c405c8c7fc3152dd85dc729120
> > Cc: Gabriel Ravier <gabravier@gmail.com>
> > Cc: Martin Uecker <uecker@tugraz.at>
> > Cc: Joseph Myers <josmyers@redhat.com>
> > Cc: Xavier Del Campo Romero <xavi.dcr@tutanota.com>
> >
> > gcc/ChangeLog:
> >
> >         * tree.cc (array_type_nelts): Rename function ...
> >         (array_type_nelts_minus_one): ... to this name.  The old name
> >         was misleading.
> >         * tree.h: Likewise.
> >         * c/c-decl.cc: Likewise.
> >         * c/c-fold.cc: Likewise.
> 
> This and the cp/ and fortran/ and rust/ entries below have different ChangeLog
> files and thus need not be prefixed but need
> 
> gcc/cp/ChangeLog:
> 
> etc.

And not just that, but shouldn't also start with Likewise. in each of those
ChangeLogs because the context isn't there, so need to repeat what changed.
Also, generally, we specify what exact functions/macros/etc. have been
changed, not just what files (unless it would be too large, hundreds or
thousands of changes, which is not the case here).

	Jakub
diff mbox series

Patch

diff --git a/gcc/c/c-decl.cc b/gcc/c/c-decl.cc
index 97f1d346835..4dced430d1f 100644
--- a/gcc/c/c-decl.cc
+++ b/gcc/c/c-decl.cc
@@ -5309,7 +5309,7 @@  one_element_array_type_p (const_tree type)
 {
   if (TREE_CODE (type) != ARRAY_TYPE)
     return false;
-  return integer_zerop (array_type_nelts (type));
+  return integer_zerop (array_type_nelts_minus_one (type));
 }
 
 /* Determine whether TYPE is a zero-length array type "[0]".  */
@@ -6257,15 +6257,15 @@  get_parm_array_spec (const struct c_parm *parm, tree attrs)
 	  for (tree type = parm->specs->type; TREE_CODE (type) == ARRAY_TYPE;
 	       type = TREE_TYPE (type))
 	    {
-	      tree nelts = array_type_nelts (type);
-	      if (error_operand_p (nelts))
+	      tree nelts_minus_one = array_type_nelts_minus_one (type);
+	      if (error_operand_p (nelts_minus_one))
 		return attrs;
-	      if (TREE_CODE (nelts) != INTEGER_CST)
+	      if (TREE_CODE (nelts_minus_one) != INTEGER_CST)
 		{
 		  /* Each variable VLA bound is represented by the dollar
 		     sign.  */
 		  spec += "$";
-		  tpbnds = tree_cons (NULL_TREE, nelts, tpbnds);
+		  tpbnds = tree_cons (NULL_TREE, nelts_minus_one, tpbnds);
 		}
 	    }
 	  tpbnds = nreverse (tpbnds);
diff --git a/gcc/c/c-fold.cc b/gcc/c/c-fold.cc
index 57b67c74bd8..9ea174f79c4 100644
--- a/gcc/c/c-fold.cc
+++ b/gcc/c/c-fold.cc
@@ -73,11 +73,12 @@  c_fold_array_ref (tree type, tree ary, tree index)
   unsigned elem_nchars = (TYPE_PRECISION (elem_type)
 			  / TYPE_PRECISION (char_type_node));
   unsigned len = (unsigned) TREE_STRING_LENGTH (ary) / elem_nchars;
-  tree nelts = array_type_nelts (TREE_TYPE (ary));
+  tree nelts_minus_one = array_type_nelts_minus_one (TREE_TYPE (ary));
   bool dummy1 = true, dummy2 = true;
-  nelts = c_fully_fold_internal (nelts, true, &dummy1, &dummy2, false, false);
+  nelts_minus_one = c_fully_fold_internal (nelts_minus_one, true, &dummy1,
+					   &dummy2, false, false);
   unsigned HOST_WIDE_INT i = tree_to_uhwi (index);
-  if (!tree_int_cst_le (index, nelts)
+  if (!tree_int_cst_le (index, nelts_minus_one)
       || i >= len
       || i + elem_nchars > len)
     return NULL_TREE;
diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
index 0d41a193ec1..eaef2a0e985 100644
--- a/gcc/config/aarch64/aarch64.cc
+++ b/gcc/config/aarch64/aarch64.cc
@@ -1082,7 +1082,7 @@  pure_scalable_type_info::analyze_array (const_tree type)
 
   /* An array of unknown, flexible or variable length will be passed and
      returned by reference whatever we do.  */
-  tree nelts_minus_one = array_type_nelts (type);
+  tree nelts_minus_one = array_type_nelts_minus_one (type);
   if (!tree_fits_uhwi_p (nelts_minus_one))
     return DOESNT_MATTER;
 
diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc
index 9c2ebe74fc9..298d8c9131a 100644
--- a/gcc/config/i386/i386.cc
+++ b/gcc/config/i386/i386.cc
@@ -24519,7 +24519,7 @@  ix86_canonical_va_list_type (tree type)
 	return ms_va_list_type_node;
 
       if ((TREE_CODE (type) == ARRAY_TYPE
-	   && integer_zerop (array_type_nelts (type)))
+	   && integer_zerop (array_type_nelts_minus_one (type)))
 	  || POINTER_TYPE_P (type))
 	{
 	  tree elem_type = TREE_TYPE (type);
diff --git a/gcc/cp/decl.cc b/gcc/cp/decl.cc
index e7bb4fa3089..fc3e28c4dec 100644
--- a/gcc/cp/decl.cc
+++ b/gcc/cp/decl.cc
@@ -6936,7 +6936,7 @@  reshape_init_array (tree type, reshape_iter *d, tree first_initializer_p,
   gcc_assert (TREE_CODE (type) == ARRAY_TYPE);
 
   if (TYPE_DOMAIN (type))
-    max_index = array_type_nelts (type);
+    max_index = array_type_nelts_minus_one (type);
 
   return reshape_init_array_1 (TREE_TYPE (type), max_index, d,
 			       first_initializer_p, complain);
diff --git a/gcc/cp/init.cc b/gcc/cp/init.cc
index e9561c146d7..4558151b4c2 100644
--- a/gcc/cp/init.cc
+++ b/gcc/cp/init.cc
@@ -260,7 +260,7 @@  build_zero_init_1 (tree type, tree nelts, bool static_storage_p,
       else if (TYPE_DOMAIN (type) == NULL_TREE)
 	return NULL_TREE;
       else
-	max_index = array_type_nelts (type);
+	max_index = array_type_nelts_minus_one (type);
 
       /* If we have an error_mark here, we should just return error mark
 	 as we don't know the size of the array yet.  */
@@ -471,7 +471,7 @@  build_value_init_noctor (tree type, tsubst_flags_t complain)
       vec<constructor_elt, va_gc> *v = NULL;
 
       /* Iterate over the array elements, building initializations.  */
-      tree max_index = array_type_nelts (type);
+      tree max_index = array_type_nelts_minus_one (type);
 
       /* If we have an error_mark here, we should just return error mark
 	 as we don't know the size of the array yet.  */
@@ -4516,7 +4516,7 @@  build_vec_init (tree base, tree maxindex, tree init,
 		    : location_of (base));
 
   if (TREE_CODE (atype) == ARRAY_TYPE && TYPE_DOMAIN (atype))
-    maxindex = array_type_nelts (atype);
+    maxindex = array_type_nelts_minus_one (atype);
 
   if (maxindex == NULL_TREE || maxindex == error_mark_node)
     return error_mark_node;
@@ -5172,7 +5172,7 @@  build_delete (location_t loc, tree otype, tree addr,
 	    error_at (loc, "unknown array size in delete");
 	  return error_mark_node;
 	}
-      return build_vec_delete (loc, addr, array_type_nelts (type),
+      return build_vec_delete (loc, addr, array_type_nelts_minus_one (type),
 			       auto_delete, use_global_delete, complain);
     }
 
diff --git a/gcc/cp/lambda.cc b/gcc/cp/lambda.cc
index 0770417810e..065113bc122 100644
--- a/gcc/cp/lambda.cc
+++ b/gcc/cp/lambda.cc
@@ -556,7 +556,8 @@  add_capture (tree lambda, tree id, tree orig_init, bool by_reference_p,
 				     integer_zero_node, tf_warning_or_error);
       initializer = build_constructor_va (init_list_type_node, 2,
 					  NULL_TREE, build_address (elt),
-					  NULL_TREE, array_type_nelts (type));
+					  NULL_TREE,
+					  array_type_nelts_minus_one (type));
       type = vla_capture_type (type);
     }
   else if (!dependent_type_p (type)
diff --git a/gcc/cp/tree.cc b/gcc/cp/tree.cc
index dfd4a3a948b..3baeb8fa252 100644
--- a/gcc/cp/tree.cc
+++ b/gcc/cp/tree.cc
@@ -3080,7 +3080,7 @@  array_type_nelts_top (tree type)
 {
   return fold_build2_loc (input_location,
 		      PLUS_EXPR, sizetype,
-		      array_type_nelts (type),
+		      array_type_nelts_minus_one (type),
 		      size_one_node);
 }
 
diff --git a/gcc/expr.cc b/gcc/expr.cc
index ffbac513692..cba8b365856 100644
--- a/gcc/expr.cc
+++ b/gcc/expr.cc
@@ -6970,14 +6970,14 @@  count_type_elements (const_tree type, bool for_ctor_p)
     {
     case ARRAY_TYPE:
       {
-	tree nelts;
+	tree nelts_minus_one;
 
-	nelts = array_type_nelts (type);
-	if (nelts && tree_fits_uhwi_p (nelts))
+	nelts_minus_one = array_type_nelts_minus_one (type);
+	if (nelts_minus_one && tree_fits_uhwi_p (nelts_minus_one))
 	  {
 	    unsigned HOST_WIDE_INT n;
 
-	    n = tree_to_uhwi (nelts) + 1;
+	    n = tree_to_uhwi (nelts_minus_one) + 1;
 	    if (n == 0 || for_ctor_p)
 	      return n;
 	    else
diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc
index 140d933e45d..b7927bcdf01 100644
--- a/gcc/fortran/trans-array.cc
+++ b/gcc/fortran/trans-array.cc
@@ -9572,7 +9572,7 @@  structure_alloc_comps (gfc_symbol * der_type, tree decl, tree dest,
       else
 	{
 	  /*  Otherwise use the TYPE_DOMAIN information.  */
-	  tmp = array_type_nelts (decl_type);
+	  tmp = array_type_nelts_minus_one (decl_type);
 	  tmp = fold_convert (gfc_array_index_type, tmp);
 	}
 
diff --git a/gcc/fortran/trans-openmp.cc b/gcc/fortran/trans-openmp.cc
index df1bf144e23..14cd2f9fad7 100644
--- a/gcc/fortran/trans-openmp.cc
+++ b/gcc/fortran/trans-openmp.cc
@@ -582,7 +582,7 @@  gfc_walk_alloc_comps (tree decl, tree dest, tree var,
 	      tem = size_binop (MINUS_EXPR, tem, size_one_node);
 	    }
 	  else
-	    tem = array_type_nelts (type);
+	    tem = array_type_nelts_minus_one (type);
 	  tem = fold_convert (gfc_array_index_type, tem);
 	}
 
@@ -1309,7 +1309,7 @@  gfc_omp_clause_linear_ctor (tree clause, tree dest, tree src, tree add)
 	  nelems = size_binop (MINUS_EXPR, nelems, size_one_node);
 	}
       else
-	nelems = array_type_nelts (type);
+	nelems = array_type_nelts_minus_one (type);
       nelems = fold_convert (gfc_array_index_type, nelems);
 
       gfc_omp_linear_clause_add_loop (&block, dest, src, add, nelems);
diff --git a/gcc/rust/backend/rust-tree.cc b/gcc/rust/backend/rust-tree.cc
index 2a5ffcbf895..a2c12204667 100644
--- a/gcc/rust/backend/rust-tree.cc
+++ b/gcc/rust/backend/rust-tree.cc
@@ -869,7 +869,7 @@  tree
 array_type_nelts_top (tree type)
 {
   return fold_build2_loc (input_location, PLUS_EXPR, sizetype,
-			  array_type_nelts (type), size_one_node);
+			  array_type_nelts_minus_one (type), size_one_node);
 }
 
 // forked from gcc/cp/tree.cc builtin_valid_in_constant_expr_p
diff --git a/gcc/tree.cc b/gcc/tree.cc
index 2d2d5b6db6e..dcaccc4c362 100644
--- a/gcc/tree.cc
+++ b/gcc/tree.cc
@@ -3698,7 +3698,7 @@  int_byte_position (const_tree field)
    ARRAY_TYPE) minus one.  This counts only elements of the top array.  */
 
 tree
-array_type_nelts (const_tree type)
+array_type_nelts_minus_one (const_tree type)
 {
   tree index_type, min, max;
 
@@ -14797,7 +14797,7 @@  is_empty_type (const_tree type)
       return true;
     }
   else if (TREE_CODE (type) == ARRAY_TYPE)
-    return (integer_minus_onep (array_type_nelts (type))
+    return (integer_minus_onep (array_type_nelts_minus_one (type))
 	    || TYPE_DOMAIN (type) == NULL_TREE
 	    || is_empty_type (TREE_TYPE (type)));
   return false;
diff --git a/gcc/tree.h b/gcc/tree.h
index 28e8e71b036..fdddbcf408e 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -4921,7 +4921,7 @@  extern tree build_method_type_directly (tree, tree, tree);
 extern tree build_method_type (tree, tree);
 extern tree build_offset_type (tree, tree);
 extern tree build_complex_type (tree, bool named = false);
-extern tree array_type_nelts (const_tree);
+extern tree array_type_nelts_minus_one (const_tree);
 
 extern tree value_member (tree, tree);
 extern tree purpose_member (const_tree, tree);