Use more ARRAY_SIZE.

gcc/ada/ChangeLog:

	* locales.c (iso_639_1_to_639_3): Use ARRAY_SIZE.
	(language_name_to_639_3): Likewise.
	(country_name_to_3166): Likewise.

gcc/analyzer/ChangeLog:

	* engine.cc (exploded_node::get_dot_fillcolor): Use ARRAY_SIZE.
	* function-set.cc (test_stdio_example): Likewise.
	* sm-file.cc (get_file_using_fns): Likewise.
	* sm-malloc.cc (malloc_state_machine::unaffected_by_call_p): Likewise.
	* sm-signal.cc (get_async_signal_unsafe_fns): Likewise.

gcc/ChangeLog:

	* attribs.cc (diag_attr_exclusions): Use ARRAY_SIZE.
	(decls_mismatched_attributes): Likewise.
	* builtins.cc (c_strlen): Likewise.
	* cfg.cc (DEF_BASIC_BLOCK_FLAG): Likewise.
	* common/config/aarch64/aarch64-common.cc (aarch64_option_init_struct): Likewise.
	* config/aarch64/aarch64-builtins.cc (aarch64_lookup_simd_builtin_type): Likewise.
	(aarch64_init_simd_builtin_types): Likewise.
	(aarch64_init_builtin_rsqrt): Likewise.
	* config/aarch64/aarch64.cc (is_madd_op): Likewise.
	* config/arm/arm-builtins.cc (arm_lookup_simd_builtin_type): Likewise.
	(arm_init_simd_builtin_types): Likewise.
	* config/avr/gen-avr-mmcu-texi.cc (mcus[ARRAY_SIZE): Likewise.
	(c_prefix): Likewise.
	(main): Likewise.
	* config/c6x/c6x.cc (N_SAVE_ORDER): Likewise.
	* config/darwin-c.cc (darwin_register_frameworks): Likewise.
	* config/gcn/mkoffload.cc (process_obj): Likewise.
	* config/i386/i386-builtins.cc (get_builtin_code_for_version): Likewise.
	(fold_builtin_cpu): Likewise.
	* config/m32c/m32c.cc (PUSHM_N): Likewise.
	* config/nvptx/mkoffload.cc (process): Likewise.
	* config/rs6000/driver-rs6000.cc (host_detect_local_cpu): Likewise.
	* config/s390/s390.cc (NR_C_MODES): Likewise.
	* config/tilepro/gen-mul-tables.cc (find_sequences): Likewise.
	(create_insn_code_compression_table): Likewise.
	* config/vms/vms.cc (NBR_CRTL_NAMES): Likewise.
	* diagnostic-format-json.cc (json_from_expanded_location): Likewise.
	* dwarf2out.cc (ARRAY_SIZE): Likewise.
	* genhooks.cc (emit_documentation): Likewise.
	(emit_init_macros): Likewise.
	* gimple-ssa-sprintf.cc (format_floating): Likewise.
	* gimple-ssa-warn-access.cc (memmodel_name): Likewise.
	* godump.cc (keyword_hash_init): Likewise.
	* hash-table.cc (hash_table_higher_prime_index): Likewise.
	* input.cc (for_each_line_table_case): Likewise.
	* ipa-free-lang-data.cc (free_lang_data): Likewise.
	* ipa-inline.cc (sanitize_attrs_match_for_inline_p): Likewise.
	* optc-save-gen.awk: Likewise.
	* spellcheck.cc (test_metric_conditions): Likewise.
	* tree-vect-slp-patterns.cc (sizeof): Likewise.
	(ARRAY_SIZE): Likewise.
	* tree.cc (build_common_tree_nodes): Likewise.

gcc/c-family/ChangeLog:

	* c-common.cc (ARRAY_SIZE): Use ARRAY_SIZE.
	(c_common_nodes_and_builtins): Likewise.
	* c-format.cc (check_tokens): Likewise.
	(check_plain): Likewise.
	* c-pragma.cc (c_pp_lookup_pragma): Likewise.
	(init_pragma): Likewise.
	* known-headers.cc (get_string_macro_hint): Likewise.
	(get_stdlib_header_for_name): Likewise.
	* c-attribs.cc: Likewise.

gcc/c/ChangeLog:

	* c-decl.cc (match_builtin_function_types): Use ARRAY_SIZE.

gcc/cp/ChangeLog:

	* module.cc (depset::entity_kind_name): Use ARRAY_SIZE.
	* name-lookup.cc (get_std_name_hint): Likewise.
	* parser.cc (cp_parser_new): Likewise.

gcc/fortran/ChangeLog:

	* frontend-passes.cc (gfc_code_walker): Use ARRAY_SIZE.
	* openmp.cc (gfc_match_omp_context_selector_specification): Likewise.
	* trans-intrinsic.cc (conv_intrinsic_ieee_builtin): Likewise.
	* trans-types.cc (gfc_get_array_descr_info): Likewise.

gcc/jit/ChangeLog:

	* jit-builtins.cc (find_builtin_by_name): Use ARRAY_SIZE.
	(get_string_for_type_id): Likewise.
	* jit-recording.cc (recording::context::context): Likewise.

gcc/lto/ChangeLog:

	* lto-common.cc (lto_resolution_read): Use ARRAY_SIZE.
	* lto-lang.cc (lto_init): Likewise.
This commit is contained in:
Martin Liska 2022-01-13 18:46:26 +01:00
parent b4fb9f4f9a
commit ca32b29ec3
55 changed files with 94 additions and 121 deletions

View file

@ -35,6 +35,8 @@
#include <ctype.h> #include <ctype.h>
#include <stddef.h> #include <stddef.h>
#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
typedef char char4 [4]; typedef char char4 [4];
/* Table containing equivalences between ISO_639_1 codes and their ISO_639_3 /* Table containing equivalences between ISO_639_1 codes and their ISO_639_3
@ -649,7 +651,7 @@ str_get_last_byte (char *lc_all) {
static char* static char*
iso_639_1_to_639_3(char* iso_639_1_code) { iso_639_1_to_639_3(char* iso_639_1_code) {
int len = sizeof(iso_639)/sizeof(iso_639[0]); int len = ARRAY_SIZE (iso_639);
char **p = iso_639; char **p = iso_639;
int j; int j;
@ -673,7 +675,7 @@ iso_639_1_to_639_3(char* iso_639_1_code) {
static char* static char*
language_name_to_639_3(char* name) { language_name_to_639_3(char* name) {
int len = sizeof(iso_639)/sizeof(iso_639[0]); int len = ARRAY_SIZE (iso_639);
char **p = iso_639; char **p = iso_639;
int j; int j;
@ -695,7 +697,7 @@ language_name_to_639_3(char* name) {
static char* static char*
country_name_to_3166 (char* name) { country_name_to_3166 (char* name) {
int len = sizeof(iso_3166)/sizeof(iso_3166[0]); int len = ARRAY_SIZE (iso_3166);
char **p = iso_3166; char **p = iso_3166;
int j; int j;

View file

@ -1139,7 +1139,7 @@ exploded_node::get_dot_fillcolor () const
= {"azure", "coral", "cornsilk", "lightblue", "yellow", = {"azure", "coral", "cornsilk", "lightblue", "yellow",
"honeydew", "lightpink", "lightsalmon", "palegreen1", "honeydew", "lightpink", "lightsalmon", "palegreen1",
"wheat", "seashell"}; "wheat", "seashell"};
const int num_colors = sizeof (colors) / sizeof (colors[0]); const int num_colors = ARRAY_SIZE (colors);
return colors[total_sm_state % num_colors]; return colors[total_sm_state % num_colors];
} }
else else

View file

@ -166,7 +166,7 @@ test_stdio_example ()
"getwc_unlocked", "getwc_unlocked",
"putc_unlocked" "putc_unlocked"
}; };
const size_t count = sizeof(example) / sizeof (example[0]); const size_t count = ARRAY_SIZE (example);
function_set fs (example, count); function_set fs (example, count);
fs.assert_sorted (); fs.assert_sorted ();
fs.assert_sane (); fs.assert_sane ();

View file

@ -329,8 +329,7 @@ get_file_using_fns ()
"ungetc", "ungetc",
"vfprintf" "vfprintf"
}; };
const size_t count const size_t count = ARRAY_SIZE (funcnames);
= sizeof(funcnames) / sizeof (funcnames[0]);
function_set fs (funcnames, count); function_set fs (funcnames, count);
return fs; return fs;
} }

View file

@ -2054,8 +2054,7 @@ malloc_state_machine::unaffected_by_call_p (tree fndecl)
/* This array must be kept sorted. */ /* This array must be kept sorted. */
"strsep", "strsep",
}; };
const size_t count const size_t count = ARRAY_SIZE (funcnames);
= sizeof(funcnames) / sizeof (funcnames[0]);
function_set fs (funcnames, count); function_set fs (funcnames, count);
if (fs.contains_decl_p (fndecl)) if (fs.contains_decl_p (fndecl))

View file

@ -309,8 +309,7 @@ get_async_signal_unsafe_fns ()
"vsnprintf", "vsnprintf",
"vsprintf" "vsprintf"
}; };
const size_t count const size_t count = ARRAY_SIZE (async_signal_unsafe_fns);
= sizeof(async_signal_unsafe_fns) / sizeof (async_signal_unsafe_fns[0]);
function_set fs (async_signal_unsafe_fns, count); function_set fs (async_signal_unsafe_fns, count);
return fs; return fs;
} }

View file

@ -499,7 +499,7 @@ diag_attr_exclusions (tree last_decl, tree node, tree attrname,
/* Iterate over the mutually exclusive attribute names and verify /* Iterate over the mutually exclusive attribute names and verify
that the symbol doesn't contain it. */ that the symbol doesn't contain it. */
for (unsigned i = 0; i != sizeof attrs / sizeof *attrs; ++i) for (unsigned i = 0; i != ARRAY_SIZE (attrs); ++i)
{ {
if (!attrs[i]) if (!attrs[i])
continue; continue;
@ -2106,7 +2106,7 @@ decls_mismatched_attributes (tree tmpl, tree decl, tree attrlist,
}; };
for (unsigned i = 0; i != 2; ++i) for (unsigned i = 0; i != 2; ++i)
for (unsigned j = 0; j != sizeof whitelist / sizeof *whitelist; ++j) for (unsigned j = 0; j != ARRAY_SIZE (whitelist); ++j)
if (lookup_attribute (whitelist[j], tmpl_attrs[i]) if (lookup_attribute (whitelist[j], tmpl_attrs[i])
|| lookup_attribute (whitelist[j], decl_attrs[i])) || lookup_attribute (whitelist[j], decl_attrs[i]))
return 0; return 0;

View file

@ -613,7 +613,7 @@ c_strlen (tree arg, int only_value, c_strlen_data *data, unsigned eltsize)
if (eltsize != tree_to_uhwi (TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (src))))) if (eltsize != tree_to_uhwi (TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (src)))))
return NULL_TREE; return NULL_TREE;
/* Set MAXELTS to sizeof (SRC) / sizeof (*SRC) - 1, the maximum possible /* Set MAXELTS to ARRAY_SIZE (SRC) - 1, the maximum possible
length of SRC. Prefer TYPE_SIZE() to TREE_STRING_LENGTH() if possible length of SRC. Prefer TYPE_SIZE() to TREE_STRING_LENGTH() if possible
in case the latter is less than the size of the array, such as when in case the latter is less than the size of the array, such as when
SRC refers to a short string literal used to initialize a large array. SRC refers to a short string literal used to initialize a large array.

View file

@ -4952,8 +4952,7 @@ handle_access_attribute (tree node[3], tree name, tree args, int flags,
int imode; int imode;
{ {
const int nmodes = const int nmodes = ARRAY_SIZE (attr_access::mode_names);
sizeof attr_access::mode_names / sizeof *attr_access::mode_names;
for (imode = 0; imode != nmodes; ++imode) for (imode = 0; imode != nmodes; ++imode)
if (!strncmp (ps, attr_access::mode_names[imode], if (!strncmp (ps, attr_access::mode_names[imode],

View file

@ -602,8 +602,7 @@ const struct c_common_resword c_common_reswords[] =
{ "null_resettable", RID_NULL_RESETTABLE, D_OBJC }, { "null_resettable", RID_NULL_RESETTABLE, D_OBJC },
}; };
const unsigned int num_c_common_reswords = const unsigned int num_c_common_reswords = ARRAY_SIZE (c_common_reswords);
sizeof c_common_reswords / sizeof (struct c_common_resword);
/* Return identifier for address space AS. */ /* Return identifier for address space AS. */
@ -4482,9 +4481,7 @@ c_common_nodes_and_builtins (void)
/* Make fileptr_type_node a distinct void * type until /* Make fileptr_type_node a distinct void * type until
FILE type is defined. Likewise for const struct tm*. */ FILE type is defined. Likewise for const struct tm*. */
for (unsigned i = 0; for (unsigned i = 0; i < ARRAY_SIZE (builtin_structptr_types); ++i)
i < sizeof (builtin_structptr_types) / sizeof (builtin_structptr_type);
++i)
builtin_structptr_types[i].node builtin_structptr_types[i].node
= build_variant_type_copy (builtin_structptr_types[i].base); = build_variant_type_copy (builtin_structptr_types[i].base);

View file

@ -3189,7 +3189,7 @@ check_tokens (const token_t *tokens, unsigned ntoks,
else else
{ {
/* Diagnose some common misspellings. */ /* Diagnose some common misspellings. */
for (unsigned i = 0; i != sizeof badwords / sizeof *badwords; ++i) for (unsigned i = 0; i != ARRAY_SIZE (badwords); ++i)
{ {
unsigned badwlen = strspn (badwords[i].name, " -"); unsigned badwlen = strspn (badwords[i].name, " -");
if (wlen >= badwlen if (wlen >= badwlen
@ -3384,14 +3384,14 @@ check_plain (location_t format_string_loc, tree format_string_cst,
if (ISPUNCT (format_chars[0])) if (ISPUNCT (format_chars[0]))
{ {
size_t nelts = sizeof c_opers / sizeof *c_opers; size_t nelts = ARRAY_SIZE (c_opers);
if (const char *ret = check_tokens (c_opers, nelts, if (const char *ret = check_tokens (c_opers, nelts,
format_string_loc, format_string_cst, format_string_loc, format_string_cst,
orig_format_chars, format_chars, orig_format_chars, format_chars,
baltoks)) baltoks))
return ret; return ret;
nelts = c_dialect_cxx () ? sizeof cxx_opers / sizeof *cxx_opers : 0; nelts = c_dialect_cxx () ? ARRAY_SIZE (cxx_opers) : 0;
if (const char *ret = check_tokens (cxx_opers, nelts, if (const char *ret = check_tokens (cxx_opers, nelts,
format_string_loc, format_string_cst, format_string_loc, format_string_cst,
orig_format_chars, format_chars, orig_format_chars, format_chars,
@ -3401,14 +3401,14 @@ check_plain (location_t format_string_loc, tree format_string_cst,
if (ISALPHA (format_chars[0])) if (ISALPHA (format_chars[0]))
{ {
size_t nelts = sizeof c_keywords / sizeof *c_keywords; size_t nelts = ARRAY_SIZE (c_keywords);
if (const char *ret = check_tokens (c_keywords, nelts, if (const char *ret = check_tokens (c_keywords, nelts,
format_string_loc, format_string_cst, format_string_loc, format_string_cst,
orig_format_chars, format_chars, orig_format_chars, format_chars,
baltoks)) baltoks))
return ret; return ret;
nelts = c_dialect_cxx () ? sizeof cxx_keywords / sizeof *cxx_keywords : 0; nelts = c_dialect_cxx () ? ARRAY_SIZE (cxx_keywords) : 0;
if (const char *ret = check_tokens (cxx_keywords, nelts, if (const char *ret = check_tokens (cxx_keywords, nelts,
format_string_loc, format_string_cst, format_string_loc, format_string_cst,
orig_format_chars, format_chars, orig_format_chars, format_chars,
@ -3527,7 +3527,7 @@ check_plain (location_t format_string_loc, tree format_string_cst,
&& ISALPHA (format_chars[1])) && ISALPHA (format_chars[1]))
{ {
/* Diagnose a subset of contractions that are best avoided. */ /* Diagnose a subset of contractions that are best avoided. */
for (unsigned i = 0; i != sizeof contrs / sizeof *contrs; ++i) for (unsigned i = 0; i != ARRAY_SIZE (contrs); ++i)
{ {
const char *apos = strchr (contrs[i].name, '\''); const char *apos = strchr (contrs[i].name, '\'');
gcc_assert (apos != NULL); gcc_assert (apos != NULL);

View file

@ -1400,8 +1400,8 @@ static const struct omp_pragma_def omp_pragmas_simd[] = {
void void
c_pp_lookup_pragma (unsigned int id, const char **space, const char **name) c_pp_lookup_pragma (unsigned int id, const char **space, const char **name)
{ {
const int n_oacc_pragmas = sizeof (oacc_pragmas) / sizeof (*oacc_pragmas); const int n_oacc_pragmas = ARRAY_SIZE (oacc_pragmas);
const int n_omp_pragmas = sizeof (omp_pragmas) / sizeof (*omp_pragmas); const int n_omp_pragmas = ARRAY_SIZE (omp_pragmas);
const int n_omp_pragmas_simd = sizeof (omp_pragmas_simd) const int n_omp_pragmas_simd = sizeof (omp_pragmas_simd)
/ sizeof (*omp_pragmas); / sizeof (*omp_pragmas);
int i; int i;
@ -1576,8 +1576,7 @@ init_pragma (void)
{ {
if (flag_openacc) if (flag_openacc)
{ {
const int n_oacc_pragmas const int n_oacc_pragmas = ARRAY_SIZE (oacc_pragmas);
= sizeof (oacc_pragmas) / sizeof (*oacc_pragmas);
int i; int i;
for (i = 0; i < n_oacc_pragmas; ++i) for (i = 0; i < n_oacc_pragmas; ++i)
@ -1587,7 +1586,7 @@ init_pragma (void)
if (flag_openmp) if (flag_openmp)
{ {
const int n_omp_pragmas = sizeof (omp_pragmas) / sizeof (*omp_pragmas); const int n_omp_pragmas = ARRAY_SIZE (omp_pragmas);
int i; int i;
for (i = 0; i < n_omp_pragmas; ++i) for (i = 0; i < n_omp_pragmas; ++i)

View file

@ -79,8 +79,7 @@ get_string_macro_hint (const char *name, enum stdlib lib)
if ((lib == STDLIB_C && flag_isoc99) if ((lib == STDLIB_C && flag_isoc99)
|| (lib == STDLIB_CPLUSPLUS && cxx_dialect >= cxx11 )) || (lib == STDLIB_CPLUSPLUS && cxx_dialect >= cxx11 ))
{ {
const size_t num_c99_cxx11_macros const size_t num_c99_cxx11_macros = ARRAY_SIZE (c99_cxx11_macros);
= sizeof (c99_cxx11_macros) / sizeof (c99_cxx11_macros[0]);
for (size_t i = 0; i < num_c99_cxx11_macros; i++) for (size_t i = 0; i < num_c99_cxx11_macros; i++)
if (strcmp (name, c99_cxx11_macros[i]) == 0) if (strcmp (name, c99_cxx11_macros[i]) == 0)
return lib == STDLIB_C ? "<inttypes.h>" : "<cinttypes>"; return lib == STDLIB_C ? "<inttypes.h>" : "<cinttypes>";
@ -204,7 +203,7 @@ get_stdlib_header_for_name (const char *name, enum stdlib lib)
{"WCHAR_MAX", {"<wchar.h>", "<cwchar>"} }, {"WCHAR_MAX", {"<wchar.h>", "<cwchar>"} },
{"WCHAR_MIN", {"<wchar.h>", "<cwchar>"} } {"WCHAR_MIN", {"<wchar.h>", "<cwchar>"} }
}; };
const size_t num_hints = sizeof (hints) / sizeof (hints[0]); const size_t num_hints = ARRAY_SIZE (hints);
for (size_t i = 0; i < num_hints; i++) for (size_t i = 0; i < num_hints; i++)
if (strcmp (name, hints[i].name) == 0) if (strcmp (name, hints[i].name) == 0)
return hints[i].header[lib]; return hints[i].header[lib];

View file

@ -1658,7 +1658,7 @@ c_bind (location_t loc, tree decl, bool is_global)
Used only by match_builtin_function_types. */ Used only by match_builtin_function_types. */
static const unsigned builtin_structptr_type_count static const unsigned builtin_structptr_type_count
= sizeof builtin_structptr_types / sizeof builtin_structptr_types[0]; = ARRAY_SIZE (builtin_structptr_types);
static GTY(()) tree last_structptr_types[builtin_structptr_type_count]; static GTY(()) tree last_structptr_types[builtin_structptr_type_count];
@ -1705,10 +1705,8 @@ match_builtin_function_types (tree newtype, tree oldtype,
tree newargs = TYPE_ARG_TYPES (newtype); tree newargs = TYPE_ARG_TYPES (newtype);
tree tryargs = newargs; tree tryargs = newargs;
const unsigned nlst const unsigned nlst = ARRAY_SIZE (last_structptr_types);
= sizeof last_structptr_types / sizeof last_structptr_types[0]; const unsigned nbst = ARRAY_SIZE (builtin_structptr_types);
const unsigned nbst
= sizeof builtin_structptr_types / sizeof builtin_structptr_types[0];
gcc_checking_assert (nlst == nbst); gcc_checking_assert (nlst == nbst);

View file

@ -787,7 +787,7 @@ dump_bb_info (FILE *outf, basic_block bb, int indent, dump_flags_t flags,
NULL NULL
#undef DEF_BASIC_BLOCK_FLAG #undef DEF_BASIC_BLOCK_FLAG
}; };
const unsigned n_bitnames = sizeof (bb_bitnames) / sizeof (char *); const unsigned n_bitnames = ARRAY_SIZE (bb_bitnames);
bool first; bool first;
char *s_indent = (char *) alloca ((size_t) indent + 1); char *s_indent = (char *) alloca ((size_t) indent + 1);
memset ((void *) s_indent, ' ', (size_t) indent); memset ((void *) s_indent, ' ', (size_t) indent);

View file

@ -314,8 +314,7 @@ aarch64_option_init_struct (struct gcc_options *opts ATTRIBUTE_UNUSED)
pop and attribute change (arm_neon headers, lto etc all cause this to pop and attribute change (arm_neon headers, lto etc all cause this to
happen quite frequently). It is a trade-off between time and space and happen quite frequently). It is a trade-off between time and space and
so time won. */ so time won. */
int n_extensions int n_extensions = ARRAY_SIZE (all_extensions);
= sizeof (all_extensions) / sizeof (struct aarch64_option_extension);
qsort (&all_extensions_by_on, n_extensions, qsort (&all_extensions_by_on, n_extensions,
sizeof (struct aarch64_option_extension), opt_ext_cmp); sizeof (struct aarch64_option_extension), opt_ext_cmp);
} }

View file

@ -832,7 +832,7 @@ aarch64_lookup_simd_builtin_type (machine_mode mode,
enum aarch64_type_qualifiers q) enum aarch64_type_qualifiers q)
{ {
int i; int i;
int nelts = sizeof (aarch64_simd_types) / sizeof (aarch64_simd_types[0]); int nelts = ARRAY_SIZE (aarch64_simd_types);
/* Non-poly scalar modes map to standard types not in the table. */ /* Non-poly scalar modes map to standard types not in the table. */
if (q != qualifier_poly && !VECTOR_MODE_P (mode)) if (q != qualifier_poly && !VECTOR_MODE_P (mode))
@ -869,7 +869,7 @@ static void
aarch64_init_simd_builtin_types (void) aarch64_init_simd_builtin_types (void)
{ {
int i; int i;
int nelts = sizeof (aarch64_simd_types) / sizeof (aarch64_simd_types[0]); int nelts = ARRAY_SIZE (aarch64_simd_types);
tree tdecl; tree tdecl;
/* Init all the element types built by the front-end. */ /* Init all the element types built by the front-end. */
@ -1434,7 +1434,7 @@ aarch64_init_builtin_rsqrt (void)
}; };
builtin_decls_data *bdd = bdda; builtin_decls_data *bdd = bdda;
builtin_decls_data *bdd_end = bdd + (sizeof (bdda) / sizeof (builtin_decls_data)); builtin_decls_data *bdd_end = bdd + (ARRAY_SIZE (bdda));
for (; bdd < bdd_end; bdd++) for (; bdd < bdd_end; bdd++)
{ {

View file

@ -20755,7 +20755,7 @@ is_madd_op (enum attr_type t1)
TYPE_SMMLA, TYPE_UMLAL, TYPE_UMLALS,TYPE_SMLSD, TYPE_SMLSDX, TYPE_SMLSLD TYPE_SMMLA, TYPE_UMLAL, TYPE_UMLALS,TYPE_SMLSD, TYPE_SMLSDX, TYPE_SMLSLD
}; };
for (i = 0; i < sizeof (mlatypes) / sizeof (enum attr_type); i++) for (i = 0; i < ARRAY_SIZE (mlatypes); i++)
{ {
if (t1 == mlatypes[i]) if (t1 == mlatypes[i])
return true; return true;

View file

@ -1471,7 +1471,7 @@ arm_lookup_simd_builtin_type (machine_mode mode,
enum arm_type_qualifiers q) enum arm_type_qualifiers q)
{ {
int i; int i;
int nelts = sizeof (arm_simd_types) / sizeof (arm_simd_types[0]); int nelts = ARRAY_SIZE (arm_simd_types);
/* Non-poly scalar modes map to standard types not in the table. */ /* Non-poly scalar modes map to standard types not in the table. */
if (q != qualifier_poly && !VECTOR_MODE_P (mode)) if (q != qualifier_poly && !VECTOR_MODE_P (mode))
@ -1503,7 +1503,7 @@ static void
arm_init_simd_builtin_types (void) arm_init_simd_builtin_types (void)
{ {
int i; int i;
int nelts = sizeof (arm_simd_types) / sizeof (arm_simd_types[0]); int nelts = ARRAY_SIZE (arm_simd_types);
tree tdecl; tree tdecl;
/* Poly types are a world of their own. In order to maintain legacy /* Poly types are a world of their own. In order to maintain legacy

View file

@ -23,10 +23,12 @@
#define IN_GEN_AVR_MMCU_TEXI #define IN_GEN_AVR_MMCU_TEXI
#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
#include "avr-devices.cc" #include "avr-devices.cc"
static const avr_mcu_t* static const avr_mcu_t*
mcus[sizeof avr_mcu_types / sizeof avr_mcu_types[0]]; mcus[ARRAY_SIZE (avr_mcu_types)];
static int letter (char c) static int letter (char c)
{ {
@ -56,7 +58,7 @@ c_prefix (const char *str)
"attiny", "atmega", "atxmega", "ata", "at90" "attiny", "atmega", "atxmega", "ata", "at90"
}; };
int i, n = (int) (sizeof (prefixes) / sizeof (*prefixes)); int i, n = (int) (ARRAY_SIZE (prefixes));
for (i = 0; i < n; i++) for (i = 0; i < n; i++)
if (str_prefix_p (str, prefixes[i])) if (str_prefix_p (str, prefixes[i]))
@ -185,7 +187,7 @@ int main (void)
print_mcus (n_mcus); print_mcus (n_mcus);
n_mcus = 0; n_mcus = 0;
for (i = 0; i < sizeof (avr_texinfo) / sizeof (*avr_texinfo); i++) for (i = 0; i < ARRAY_SIZE (avr_texinfo); i++)
if (arch_id == avr_texinfo[i].arch_id) if (arch_id == avr_texinfo[i].arch_id)
printf ("@item %s\n%s\n", mcu->name, avr_texinfo[i].texinfo); printf ("@item %s\n%s\n", mcu->name, avr_texinfo[i].texinfo);
} }

View file

@ -2580,7 +2580,7 @@ static unsigned reg_save_order[] =
REG_B14, REG_A15 REG_B14, REG_A15
}; };
#define N_SAVE_ORDER (sizeof reg_save_order / sizeof *reg_save_order) #define N_SAVE_ORDER (ARRAY_SIZE (reg_save_order))
/* Compute the layout of the stack frame and store it in FRAME. */ /* Compute the layout of the stack frame and store it in FRAME. */

View file

@ -505,7 +505,7 @@ darwin_register_frameworks (const char *sysroot,
size_t i; size_t i;
/* Setup default search path for frameworks. */ /* Setup default search path for frameworks. */
for (i=0; i<sizeof (framework_defaults)/sizeof(const char *); ++i) for (i = 0; i < ARRAY_SIZE (framework_defaults); ++i)
{ {
char *str; char *str;
if (sysroot) if (sysroot)

View file

@ -723,7 +723,7 @@ process_obj (FILE *in, FILE *cfile)
" unsigned global_variable_count;\n" " unsigned global_variable_count;\n"
"} target_data = {\n" "} target_data = {\n"
" &gcn_image,\n" " &gcn_image,\n"
" sizeof (gcn_kernels) / sizeof (gcn_kernels[0]),\n" " ARRAY_SIZE (gcn_kernels),\n"
" gcn_kernels,\n" " gcn_kernels,\n"
" gcn_num_vars\n" " gcn_num_vars\n"
"};\n\n"); "};\n\n");

View file

@ -1936,8 +1936,7 @@ get_builtin_code_for_version (tree decl, tree *predicate_list)
enum feature_priority priority = P_NONE; enum feature_priority priority = P_NONE;
static unsigned int NUM_FEATURES static unsigned int NUM_FEATURES = ARRAY_SIZE (isa_names_table);
= sizeof (isa_names_table) / sizeof (_isa_names_table);
unsigned int i; unsigned int i;
@ -2290,8 +2289,7 @@ fold_builtin_cpu (tree fndecl, tree *args)
tree final; tree final;
unsigned int field_val = 0; unsigned int field_val = 0;
unsigned int NUM_ISA_NAMES unsigned int NUM_ISA_NAMES = ARRAY_SIZE (isa_names_table);
= sizeof (isa_names_table) / sizeof (struct _isa_names_table);
for (i = 0; i < NUM_ISA_NAMES; i++) for (i = 0; i < NUM_ISA_NAMES; i++)
if (strcmp (isa_names_table[i].name, if (strcmp (isa_names_table[i].name,

View file

@ -1090,7 +1090,7 @@ static struct
{ FB_REGNO, 0x01, 2, 4 } { FB_REGNO, 0x01, 2, 4 }
}; };
#define PUSHM_N (sizeof(pushm_info)/sizeof(pushm_info[0])) #define PUSHM_N (ARRAY_SIZE (pushm_info))
/* Returns TRUE if we need to save/restore the given register. We /* Returns TRUE if we need to save/restore the given register. We
save everything for exception handlers, so that any register can be save everything for exception handlers, so that any register can be

View file

@ -316,11 +316,11 @@ process (FILE *in, FILE *out)
" const struct nvptx_fn *fn_names;\n" " const struct nvptx_fn *fn_names;\n"
" unsigned fn_num;\n" " unsigned fn_num;\n"
"} target_data = {\n" "} target_data = {\n"
" ptx_objs, sizeof (ptx_objs) / sizeof (ptx_objs[0]),\n" " ptx_objs, ARRAY_SIZE (ptx_objs),\n"
" var_mappings," " var_mappings,"
" sizeof (var_mappings) / sizeof (var_mappings[0]),\n" " ARRAY_SIZE (var_mappings),\n"
" func_mappings," " func_mappings,"
" sizeof (func_mappings) / sizeof (func_mappings[0])\n" " ARRAY_SIZE (func_mappings)\n"
"};\n\n"); "};\n\n");
fprintf (out, "#ifdef __cplusplus\n" fprintf (out, "#ifdef __cplusplus\n"

View file

@ -599,7 +599,7 @@ host_detect_local_cpu (int argc, const char **argv)
if (assembler) if (assembler)
{ {
for (i = 0; i < sizeof (asm_names) / sizeof (asm_names[0]); i++) for (i = 0; i < ARRAY_SIZE (asm_names); i++)
{ {
if (!asm_names[i].cpu || !strcmp (asm_names[i].cpu, cpu)) if (!asm_names[i].cpu || !strcmp (asm_names[i].cpu, cpu))
return asm_names[i].asm_sw; return asm_names[i].asm_sw;

View file

@ -8769,7 +8769,7 @@ static machine_mode constant_modes[] =
QImode, QImode,
V1QImode V1QImode
}; };
#define NR_C_MODES (sizeof (constant_modes) / sizeof (constant_modes[0])) #define NR_C_MODES (ARRAY_SIZE (constant_modes))
struct constant struct constant
{ {

View file

@ -462,7 +462,7 @@ find_sequences (ExpressionTree &s, ExpressionTreeMap &best_solution)
const Operator *const prev_op = s.m_exprs[num_vals - 1].m_op; const Operator *const prev_op = s.m_exprs[num_vals - 1].m_op;
const int prev_top_index = (prev_op != NULL) ? prev_op->m_top_index : -1; const int prev_top_index = (prev_op != NULL) ? prev_op->m_top_index : -1;
for (size_t f = 0; f < sizeof ops / sizeof ops[0]; f++) for (size_t f = 0; f < ARRAY_SIZE (ops); f++)
{ {
const Operator *const op = &ops[f]; const Operator *const op = &ops[f];
@ -564,7 +564,7 @@ create_insn_code_compression_table ()
printf ("const enum insn_code %s_multiply_insn_seq_decode_opcode[] = {\n" printf ("const enum insn_code %s_multiply_insn_seq_decode_opcode[] = {\n"
" CODE_FOR_nothing /* must be first */ ", ARCH); " CODE_FOR_nothing /* must be first */ ", ARCH);
for (size_t i = 0; i < sizeof ops / sizeof ops[0]; i++) for (size_t i = 0; i < ARRAY_SIZE (ops); i++)
{ {
Operator *op = &ops[i]; Operator *op = &ops[i];
int index = -1; int index = -1;

View file

@ -99,7 +99,7 @@ static const struct vms_crtl_name vms_crtl_names[] =
/* Number of entires in the above array. */ /* Number of entires in the above array. */
#define NBR_CRTL_NAMES (sizeof (vms_crtl_names) / sizeof (*vms_crtl_names)) #define NBR_CRTL_NAMES (ARRAY_SIZE (vms_crtl_names))
/* List of aliased identifiers. They must be persistent across gc. */ /* List of aliased identifiers. They must be persistent across gc. */

View file

@ -2619,7 +2619,7 @@ depset::entity_kind_name () const
{"decl", "specialization", "partial", "using", {"decl", "specialization", "partial", "using",
"namespace", "redirect", "binding"}; "namespace", "redirect", "binding"};
entity_kind kind = get_entity_kind (); entity_kind kind = get_entity_kind ();
gcc_checking_assert (kind < sizeof (names) / sizeof(names[0])); gcc_checking_assert (kind < ARRAY_SIZE (names));
return names[kind]; return names[kind];
} }

View file

@ -6918,7 +6918,7 @@ get_std_name_hint (const char *name)
/* <vector>. */ /* <vector>. */
{"vector", "<vector>", cxx98}, {"vector", "<vector>", cxx98},
}; };
const size_t num_hints = sizeof (hints) / sizeof (hints[0]); const size_t num_hints = ARRAY_SIZE (hints);
for (size_t i = 0; i < num_hints; i++) for (size_t i = 0; i < num_hints; i++)
{ {
if (strcmp (name, hints[i].name) == 0) if (strcmp (name, hints[i].name) == 0)

View file

@ -4200,7 +4200,7 @@ cp_parser_new (cp_lexer *lexer)
{ {
/* Initialize the binops_by_token so that we can get the tree /* Initialize the binops_by_token so that we can get the tree
directly from the token. */ directly from the token. */
for (unsigned i = 0; i < sizeof (binops) / sizeof (binops[0]); i++) for (unsigned i = 0; i < ARRAY_SIZE (binops); i++)
binops_by_token[binops[i].token_type] = binops[i]; binops_by_token[binops[i].token_type] = binops[i];
cp_parser *parser = ggc_cleared_alloc<cp_parser> (); cp_parser *parser = ggc_cleared_alloc<cp_parser> ();

View file

@ -62,7 +62,7 @@ json_from_expanded_location (diagnostic_context *context, location_t loc)
{"byte-column", DIAGNOSTICS_COLUMN_UNIT_BYTE} {"byte-column", DIAGNOSTICS_COLUMN_UNIT_BYTE}
}; };
int the_column = INT_MIN; int the_column = INT_MIN;
for (int i = 0; i != sizeof column_fields / sizeof (*column_fields); ++i) for (int i = 0; i != ARRAY_SIZE (column_fields); ++i)
{ {
context->column_unit = column_fields[i].unit; context->column_unit = column_fields[i].unit;
const int col = diagnostic_converted_column (context, exploc); const int col = diagnostic_converted_column (context, exploc);

View file

@ -13532,8 +13532,7 @@ static const dwarf_qual_info_t dwarf_qual_info[] =
{ TYPE_QUAL_RESTRICT, DW_TAG_restrict_type }, { TYPE_QUAL_RESTRICT, DW_TAG_restrict_type },
{ TYPE_QUAL_ATOMIC, DW_TAG_atomic_type } { TYPE_QUAL_ATOMIC, DW_TAG_atomic_type }
}; };
static const unsigned int dwarf_qual_info_size static const unsigned int dwarf_qual_info_size = ARRAY_SIZE (dwarf_qual_info);
= sizeof (dwarf_qual_info) / sizeof (dwarf_qual_info[0]);
/* If DIE is a qualified DIE of some base DIE with the same parent, /* If DIE is a qualified DIE of some base DIE with the same parent,
return the base DIE, otherwise return NULL. Set MASK to the return the base DIE, otherwise return NULL. Set MASK to the

View file

@ -5654,9 +5654,7 @@ gfc_code_walker (gfc_code **c, walk_code_fn_t codefn, walk_expr_fn_t exprfn,
WALK_SUBEXPR (co->ext.omp_clauses->detach); WALK_SUBEXPR (co->ext.omp_clauses->detach);
for (idx = 0; idx < OMP_IF_LAST; idx++) for (idx = 0; idx < OMP_IF_LAST; idx++)
WALK_SUBEXPR (co->ext.omp_clauses->if_exprs[idx]); WALK_SUBEXPR (co->ext.omp_clauses->if_exprs[idx]);
for (idx = 0; for (idx = 0; idx < ARRAY_SIZE (list_types); idx++)
idx < sizeof (list_types) / sizeof (list_types[0]);
idx++)
for (n = co->ext.omp_clauses->lists[list_types[idx]]; for (n = co->ext.omp_clauses->lists[list_types[idx]];
n; n = n->next) n; n = n->next)
WALK_SUBEXPR (n->expr); WALK_SUBEXPR (n->expr);

View file

@ -4902,8 +4902,7 @@ gfc_match_omp_context_selector_specification (gfc_omp_declare_variant *odv)
match m; match m;
const char *selector_sets[] = { "construct", "device", const char *selector_sets[] = { "construct", "device",
"implementation", "user" }; "implementation", "user" };
const int selector_set_count const int selector_set_count = ARRAY_SIZE (selector_sets);
= sizeof (selector_sets) / sizeof (*selector_sets);
int i; int i;
char buf[GFC_MAX_SYMBOL_LEN + 1]; char buf[GFC_MAX_SYMBOL_LEN + 1];

View file

@ -9784,7 +9784,7 @@ conv_intrinsic_ieee_builtin (gfc_se * se, gfc_expr * expr,
enum built_in_function code, int nargs) enum built_in_function code, int nargs)
{ {
tree args[2]; tree args[2];
gcc_assert ((unsigned) nargs <= sizeof(args)/sizeof(args[0])); gcc_assert ((unsigned) nargs <= ARRAY_SIZE (args));
conv_ieee_function_args (se, expr, args, nargs); conv_ieee_function_args (se, expr, args, nargs);
se->expr = build_call_expr_loc_array (input_location, se->expr = build_call_expr_loc_array (input_location,

View file

@ -3420,7 +3420,7 @@ gfc_get_array_descr_info (const_tree type, struct array_descr_info *info)
} }
rank = GFC_TYPE_ARRAY_RANK (type); rank = GFC_TYPE_ARRAY_RANK (type);
if (rank >= (int) (sizeof (info->dimen) / sizeof (info->dimen[0]))) if (rank >= (int) (ARRAY_SIZE (info->dimen)))
return false; return false;
etype = GFC_TYPE_ARRAY_DATAPTR_TYPE (type); etype = GFC_TYPE_ARRAY_DATAPTR_TYPE (type);

View file

@ -128,7 +128,7 @@ emit_documentation (const char *in_fname)
} }
fclose (f); fclose (f);
/* For each hook in hook_array, if it is a start hook, store its position. */ /* For each hook in hook_array, if it is a start hook, store its position. */
for (i = 0; i < (int) (sizeof hook_array / sizeof hook_array[0]); i++) for (i = 0; i < (int) (ARRAY_SIZE (hook_array)); i++)
{ {
struct s_hook sh, *shp; struct s_hook sh, *shp;
void *p; void *p;
@ -223,7 +223,7 @@ emit_documentation (const char *in_fname)
/* POD-valued hooks sometimes come in groups with common /* POD-valued hooks sometimes come in groups with common
documentation.*/ documentation.*/
for (j = i + 1; for (j = i + 1;
j < (int) (sizeof hook_array / sizeof hook_array[0]) j < (int) (ARRAY_SIZE (hook_array))
&& hook_array[j].doc == 0 && hook_array[j].type; j++) && hook_array[j].doc == 0 && hook_array[j].type; j++)
{ {
char *namex = upstrdup (hook_array[j].name); char *namex = upstrdup (hook_array[j].name);
@ -246,8 +246,7 @@ emit_documentation (const char *in_fname)
printf ("\n@end %s", deftype); printf ("\n@end %s", deftype);
} }
} }
if (++i >= (int) (sizeof hook_array / sizeof hook_array[0]) if (++i >= (int) (ARRAY_SIZE (hook_array)) || !hook_array[i].doc)
|| !hook_array[i].doc)
break; break;
free (name); free (name);
sh.name = name = upstrdup (hook_array[i].name); sh.name = name = upstrdup (hook_array[i].name);
@ -270,7 +269,7 @@ emit_init_macros (const char *docname)
for (print_nest = 0; print_nest <= MAX_NEST; print_nest++) for (print_nest = 0; print_nest <= MAX_NEST; print_nest++)
{ {
for (i = 0; i < (int) (sizeof hook_array / sizeof hook_array[0]); i++) for (i = 0; i < (int) (ARRAY_SIZE (hook_array)); i++)
{ {
char *name = upstrdup (hook_array[i].name); char *name = upstrdup (hook_array[i].name);

View file

@ -1953,7 +1953,7 @@ format_floating (const directive &dir, tree arg, pointer_query &)
&res.range.min, &res.range.max &res.range.min, &res.range.max
}; };
for (int i = 0; i != sizeof minmax / sizeof *minmax; ++i) for (int i = 0; i != ARRAY_SIZE (minmax); ++i)
{ {
/* Convert the GCC real value representation with the precision /* Convert the GCC real value representation with the precision
of the real type to the mpfr_t format rounding down in the of the real type to the mpfr_t format rounding down in the

View file

@ -2853,7 +2853,7 @@ memmodel_name (unsigned HOST_WIDE_INT val)
{ {
val = memmodel_base (val); val = memmodel_base (val);
for (unsigned i = 0; i != sizeof memory_models / sizeof *memory_models; ++i) for (unsigned i = 0; i != ARRAY_SIZE (memory_models); ++i)
{ {
if (val == memory_models[i].modval) if (val == memory_models[i].modval)
return memory_models[i].modname; return memory_models[i].modname;

View file

@ -1326,7 +1326,7 @@ static void
keyword_hash_init (class godump_container *container) keyword_hash_init (class godump_container *container)
{ {
size_t i; size_t i;
size_t count = sizeof (keywords) / sizeof (keywords[0]); size_t count = ARRAY_SIZE (keywords);
void **slot; void **slot;
for (i = 0; i < count; i++) for (i = 0; i < count; i++)

View file

@ -84,7 +84,7 @@ unsigned int
hash_table_higher_prime_index (unsigned long n) hash_table_higher_prime_index (unsigned long n)
{ {
unsigned int low = 0; unsigned int low = 0;
unsigned int high = sizeof (prime_tab) / sizeof (prime_tab[0]); unsigned int high = ARRAY_SIZE (prime_tab);
while (low != high) while (low != high)
{ {

View file

@ -3724,8 +3724,7 @@ for_each_line_table_case (void (*testcase) (const line_table_case &))
{ {
/* ...and use each of the "interesting" location values as /* ...and use each of the "interesting" location values as
the starting location within line_table. */ the starting location within line_table. */
const int num_boundary_locations const int num_boundary_locations = ARRAY_SIZE (boundary_locations);
= sizeof (boundary_locations) / sizeof (boundary_locations[0]);
for (int loc_idx = 0; loc_idx < num_boundary_locations; loc_idx++) for (int loc_idx = 0; loc_idx < num_boundary_locations; loc_idx++)
{ {
line_table_case c (default_range_bits, boundary_locations[loc_idx]); line_table_case c (default_range_bits, boundary_locations[loc_idx]);

View file

@ -1109,9 +1109,7 @@ free_lang_data (void)
free_lang_data_in_cgraph (&fld); free_lang_data_in_cgraph (&fld);
/* Create gimple variants for common types. */ /* Create gimple variants for common types. */
for (unsigned i = 0; for (unsigned i = 0; i < ARRAY_SIZE (builtin_structptr_types); ++i)
i < sizeof (builtin_structptr_types) / sizeof (builtin_structptr_type);
++i)
builtin_structptr_types[i].node = builtin_structptr_types[i].base; builtin_structptr_types[i].node = builtin_structptr_types[i].base;
/* Reset some langhooks. Do not reset types_compatible_p, it may /* Reset some langhooks. Do not reset types_compatible_p, it may

View file

@ -278,7 +278,7 @@ sanitize_attrs_match_for_inline_p (const_tree caller, const_tree callee)
SANITIZE_POINTER_SUBTRACT SANITIZE_POINTER_SUBTRACT
}; };
for (unsigned i = 0; i < sizeof (codes) / sizeof (codes[0]); i++) for (unsigned i = 0; i < ARRAY_SIZE (codes); i++)
if (sanitize_flags_p (codes[i], caller) if (sanitize_flags_p (codes[i], caller)
!= sanitize_flags_p (codes[i], callee)) != sanitize_flags_p (codes[i], callee))
return false; return false;

View file

@ -109,9 +109,7 @@ find_builtin_by_name (const char *in_name,
We start at index 1 to skip the initial entry (BUILT_IN_NONE), which We start at index 1 to skip the initial entry (BUILT_IN_NONE), which
has a NULL name. */ has a NULL name. */
for (unsigned int i = 1; for (unsigned int i = 1; i < ARRAY_SIZE (builtin_data); i++)
i < sizeof (builtin_data) / sizeof (builtin_data[0]);
i++)
{ {
const struct builtin_data& bd = builtin_data[i]; const struct builtin_data& bd = builtin_data[i];
if (matches_builtin (in_name, bd)) if (matches_builtin (in_name, bd))
@ -320,7 +318,7 @@ static const char * const type_names[] = {
static const char * static const char *
get_string_for_type_id (enum jit_builtin_type type_id) get_string_for_type_id (enum jit_builtin_type type_id)
{ {
gcc_assert (type_id < sizeof (type_names)/sizeof(type_names[0])); gcc_assert (type_id < ARRAY_SIZE (type_names));
return type_names[type_id]; return type_names[type_id];
} }

View file

@ -568,9 +568,7 @@ recording::context::context (context *parent_ctxt)
if (parent_ctxt) if (parent_ctxt)
{ {
/* Inherit options from parent. */ /* Inherit options from parent. */
for (unsigned i = 0; for (unsigned i = 0; i < ARRAY_SIZE (m_str_options); i++)
i < sizeof (m_str_options) / sizeof (m_str_options[0]);
i++)
{ {
const char *parent_opt = parent_ctxt->m_str_options[i]; const char *parent_opt = parent_ctxt->m_str_options[i];
m_str_options[i] = parent_opt ? xstrdup (parent_opt) : NULL; m_str_options[i] = parent_opt ? xstrdup (parent_opt) : NULL;

View file

@ -2104,8 +2104,7 @@ lto_resolution_read (splay_tree file_ids, FILE *resolution, lto_file *file)
char r_str[27]; char r_str[27];
enum ld_plugin_symbol_resolution r = (enum ld_plugin_symbol_resolution) 0; enum ld_plugin_symbol_resolution r = (enum ld_plugin_symbol_resolution) 0;
unsigned int j; unsigned int j;
unsigned int lto_resolution_str_len unsigned int lto_resolution_str_len = ARRAY_SIZE (lto_resolution_str);
= sizeof (lto_resolution_str) / sizeof (char *);
res_pair rp; res_pair rp;
t = fscanf (resolution, "%u " HOST_WIDE_INT_PRINT_HEX_PURE t = fscanf (resolution, "%u " HOST_WIDE_INT_PRINT_HEX_PURE

View file

@ -1319,9 +1319,7 @@ lto_init (void)
distinction should only be relevant to the front-end, so we distinction should only be relevant to the front-end, so we
always use the C definition here in lto1. always use the C definition here in lto1.
Likewise for const struct tm*. */ Likewise for const struct tm*. */
for (unsigned i = 0; for (unsigned i = 0; i < ARRAY_SIZE (builtin_structptr_types); ++i)
i < sizeof (builtin_structptr_types) / sizeof (builtin_structptr_type);
++i)
{ {
gcc_assert (builtin_structptr_types[i].node gcc_assert (builtin_structptr_types[i].node
== builtin_structptr_types[i].base); == builtin_structptr_types[i].base);

View file

@ -1104,7 +1104,7 @@ for (i = 0; i < n_target_val; i++) {
} }
if (has_target_explicit_mask) { if (has_target_explicit_mask) {
print " for (size_t i = 0; i < sizeof (ptr1->explicit_mask) / sizeof (ptr1->explicit_mask[0]); i++)"; print " for (size_t i = 0; i < ARRAY_SIZE (ptr1->explicit_mask); i++)";
print " if (ptr1->explicit_mask[i] != ptr2->explicit_mask[i])"; print " if (ptr1->explicit_mask[i] != ptr2->explicit_mask[i])";
print " return false;" print " return false;"
} }
@ -1152,7 +1152,7 @@ for (i = 0; i < n_target_val; i++) {
print " hstate.add_hwi (ptr->" name");"; print " hstate.add_hwi (ptr->" name");";
} }
if (has_target_explicit_mask) { if (has_target_explicit_mask) {
print " for (size_t i = 0; i < sizeof (ptr->explicit_mask) / sizeof (ptr->explicit_mask[0]); i++)"; print " for (size_t i = 0; i < ARRAY_SIZE (ptr->explicit_mask); i++)";
print " hstate.add_hwi (ptr->explicit_mask[i]);"; print " hstate.add_hwi (ptr->explicit_mask[i]);";
} }
@ -1192,7 +1192,7 @@ for (i = 0; i < n_target_val; i++) {
} }
if (has_target_explicit_mask) { if (has_target_explicit_mask) {
print " for (size_t i = 0; i < sizeof (ptr->explicit_mask) / sizeof (ptr->explicit_mask[0]); i++)"; print " for (size_t i = 0; i < ARRAY_SIZE (ptr->explicit_mask); i++)";
print " bp_pack_value (bp, ptr->explicit_mask[i], 64);"; print " bp_pack_value (bp, ptr->explicit_mask[i], 64);";
} }
@ -1235,7 +1235,7 @@ for (i = 0; i < n_target_val; i++) {
} }
if (has_target_explicit_mask) { if (has_target_explicit_mask) {
print " for (size_t i = 0; i < sizeof (ptr->explicit_mask) / sizeof (ptr->explicit_mask[0]); i++)"; print " for (size_t i = 0; i < ARRAY_SIZE (ptr->explicit_mask); i++)";
print " ptr->explicit_mask[i] = bp_unpack_value (bp, 64);"; print " ptr->explicit_mask[i] = bp_unpack_value (bp, 64);";
} }
@ -1317,7 +1317,7 @@ for (i = 0; i < n_opt_val; i++) {
else else
print " hstate.add_hwi (ptr->" name");"; print " hstate.add_hwi (ptr->" name");";
} }
print " for (size_t i = 0; i < sizeof (ptr->explicit_mask) / sizeof (ptr->explicit_mask[0]); i++)"; print " for (size_t i = 0; i < ARRAY_SIZE (ptr->explicit_mask); i++)";
print " hstate.add_hwi (ptr->explicit_mask[i]);"; print " hstate.add_hwi (ptr->explicit_mask[i]);";
print " return hstate.end ();"; print " return hstate.end ();";
print "}"; print "}";
@ -1346,7 +1346,7 @@ for (i = 0; i < n_opt_val; i++) {
print " return false;"; print " return false;";
} }
} }
print " for (size_t i = 0; i < sizeof (ptr1->explicit_mask) / sizeof (ptr1->explicit_mask[0]); i++)"; print " for (size_t i = 0; i < ARRAY_SIZE (ptr1->explicit_mask); i++)";
print " if (ptr1->explicit_mask[i] != ptr2->explicit_mask[i])"; print " if (ptr1->explicit_mask[i] != ptr2->explicit_mask[i])";
print " return false;" print " return false;"
print " return true;"; print " return true;";
@ -1380,7 +1380,7 @@ for (i = 0; i < n_opt_val; i++) {
} }
} }
} }
print " for (size_t i = 0; i < sizeof (ptr->explicit_mask) / sizeof (ptr->explicit_mask[0]); i++)"; print " for (size_t i = 0; i < ARRAY_SIZE (ptr->explicit_mask); i++)";
print " bp_pack_value (bp, ptr->explicit_mask[i], 64);"; print " bp_pack_value (bp, ptr->explicit_mask[i], 64);";
print "}"; print "}";
@ -1412,7 +1412,7 @@ for (i = 0; i < n_opt_val; i++) {
} }
} }
} }
print " for (size_t i = 0; i < sizeof (ptr->explicit_mask) / sizeof (ptr->explicit_mask[0]); i++)"; print " for (size_t i = 0; i < ARRAY_SIZE (ptr->explicit_mask); i++)";
print " ptr->explicit_mask[i] = bp_unpack_value (bp, 64);"; print " ptr->explicit_mask[i] = bp_unpack_value (bp, 64);";
print "}"; print "}";
print "/* Free heap memory used by optimization options */"; print "/* Free heap memory used by optimization options */";

View file

@ -489,7 +489,7 @@ static const char * const test_data[] = {
static void static void
test_metric_conditions () test_metric_conditions ()
{ {
const int num_test_cases = sizeof (test_data) / sizeof (test_data[0]); const int num_test_cases = ARRAY_SIZE (test_data);
for (int i = 0; i < num_test_cases; i++) for (int i = 0; i < num_test_cases; i++)
{ {

View file

@ -1637,4 +1637,4 @@ vect_pattern_decl_t slp_patterns[]
#undef SLP_PATTERN #undef SLP_PATTERN
/* Set the number of SLP pattern matchers available. */ /* Set the number of SLP pattern matchers available. */
size_t num__slp_patterns = sizeof(slp_patterns)/sizeof(vect_pattern_decl_t); size_t num__slp_patterns = ARRAY_SIZE (slp_patterns);

View file

@ -9408,9 +9408,7 @@ build_common_tree_nodes (bool signed_char)
ptr_type_node = build_pointer_type (void_type_node); ptr_type_node = build_pointer_type (void_type_node);
const_ptr_type_node const_ptr_type_node
= build_pointer_type (build_type_variant (void_type_node, 1, 0)); = build_pointer_type (build_type_variant (void_type_node, 1, 0));
for (unsigned i = 0; for (unsigned i = 0; i < ARRAY_SIZE (builtin_structptr_types); ++i)
i < sizeof (builtin_structptr_types) / sizeof (builtin_structptr_type);
++i)
builtin_structptr_types[i].node = builtin_structptr_types[i].base; builtin_structptr_types[i].node = builtin_structptr_types[i].base;
pointer_sized_int_node = build_nonstandard_integer_type (POINTER_SIZE, 1); pointer_sized_int_node = build_nonstandard_integer_type (POINTER_SIZE, 1);