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>
gcc/ChangeLog:
* tree.cc (array_type_nelts, array_type_nelts_minus_one)
* tree.h (array_type_nelts, array_type_nelts_minus_one)
* expr.cc (count_type_elements)
* config/aarch64/aarch64.cc
(pure_scalable_type_info::analyze_array)
* config/i386/i386.cc (ix86_canonical_va_list_type):
Rename array_type_nelts => array_type_nelts_minus_one
The old name was misleading.
gcc/c/ChangeLog:
* c-decl.cc (one_element_array_type_p, get_parm_array_spec)
* c-fold.cc (c_fold_array_ref):
Rename array_type_nelts => array_type_nelts_minus_one
gcc/cp/ChangeLog:
* decl.cc (reshape_init_array)
* init.cc
(build_zero_init_1)
(build_value_init_noctor)
(build_vec_init)
(build_delete)
* lambda.cc (add_capture)
* tree.cc (array_type_nelts_top):
Rename array_type_nelts => array_type_nelts_minus_one
gcc/fortran/ChangeLog:
* trans-array.cc (structure_alloc_comps)
* trans-openmp.cc
(gfc_walk_alloc_comps)
(gfc_omp_clause_linear_ctor):
Rename array_type_nelts => array_type_nelts_minus_one
gcc/rust/ChangeLog:
* backend/rust-tree.cc (array_type_nelts_top):
Rename array_type_nelts => array_type_nelts_minus_one
Suggested-by: Richard Biener <richard.guenther@gmail.com>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
{
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]". */
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);
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;
/* 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;
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);
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);
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. */
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. */
: 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;
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);
}
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)
{
return fold_build2_loc (input_location,
PLUS_EXPR, sizetype,
- array_type_nelts (type),
+ array_type_nelts_minus_one (type),
size_one_node);
}
{
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
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);
}
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);
}
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);
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
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;
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;
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);