From: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
To: gcc-patches@gcc.gnu.org
Cc: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>,
Bernhard Reutner-Fischer <aldot@gcc.gnu.org>,
fortran@gcc.gnu.org
Subject: [PATCH 3/5] Fortran: Narrow return types [PR78798]
Date: Sun, 13 Nov 2022 00:45:41 +0100 [thread overview]
Message-ID: <20221112234543.95441-4-aldot@gcc.gnu.org> (raw)
In-Reply-To: <20221112234543.95441-1-aldot@gcc.gnu.org>
gcc/fortran/ChangeLog:
* arith.cc (compare_complex): Use narrower return type.
(gfc_compare_string): Likewise.
* arith.h (gfc_compare_string): Same.
(gfc_compare_with_Cstring): Ditto.
* array.cc (compare_bounds): Ditto.
(gfc_compare_array_spec): Likewise.
(is_constant_element): Likewise.
(gfc_constant_ac): Likewise.
* check.cc (dim_rank_check): Likewise.
* cpp.cc (gfc_cpp_init_options): Likewise.
(dump_macro): Likewise.
* cpp.h (gfc_cpp_handle_option): Likewise.
* dependency.cc (gfc_ref_needs_temporary_p): Likewise.
(gfc_check_argument_dependency): Likewise.
(gfc_check_fncall_dependency): Likewise.
(ref_same_as_full_array): Likewise.
* dependency.h (gfc_check_fncall_dependency): Likewise.
(gfc_dep_resolver): Likewise.
(gfc_are_equivalenced_arrays): Likewise.
* expr.cc (gfc_copy_ref): Likewise.
(gfc_kind_max): Likewise.
(numeric_type): Likewise.
* gfortran.h (gfc_at_end): Likewise.
(gfc_at_eof): Likewise.
(gfc_at_bol): Likewise.
(gfc_at_eol): Likewise.
(gfc_check_include): Likewise.
(gfc_define_undef_line): Likewise.
(gfc_wide_is_printable): Likewise.
(gfc_wide_is_digit): Likewise.
(gfc_wide_fits_in_byte): Likewise.
(get_c_kind): Likewise.
(gfc_find_sym_tree): Likewise.
(gfc_generic_intrinsic): Likewise.
(gfc_specific_intrinsic): Likewise.
(gfc_intrinsic_actual_ok): Likewise.
(gfc_has_vector_index): Likewise.
(gfc_numeric_ts): Likewise.
(gfc_impure_variable): Likewise.
(gfc_pure): Likewise.
(gfc_implicit_pure): Likewise.
(gfc_elemental): Likewise.
(gfc_pure_function): Likewise.
(gfc_implicit_pure_function): Likewise.
(gfc_compare_array_spec): Likewise.
(gfc_constant_ac): Likewise.
(gfc_expanded_ac): Likewise.
(gfc_check_digit): Likewise.
* intrinsic.cc (gfc_find_subroutine): Likewise.
(gfc_generic_intrinsic): Likewise.
(gfc_specific_intrinsic): Likewise.
* io.cc (compare_to_allowed_values): Likewise.
* misc.cc (gfc_done_2): Likewise.
* parse.cc: Likewise.
* parse.h (gfc_check_do_variable): Likewise.
* primary.cc (gfc_check_digit): Likewise.
* resolve.cc (resolve_structure_cons): Likewise.
(pure_stmt_function): Likewise.
(gfc_pure_function): Likewise.
(impure_stmt_fcn): Likewise.
(resolve_forall_iterators): Likewise.
(resolve_data): Likewise.
(gfc_impure_variable): Likewise.
(gfc_pure): Likewise.
(gfc_unset_implicit_pure): Likewise.
* scanner.cc (wide_is_ascii): Likewise.
(gfc_wide_toupper): Likewise.
(gfc_open_included_file): Likewise.
(gfc_at_end): Likewise.
(gfc_at_eof): Likewise.
(gfc_at_bol): Likewise.
(skip_comment_line): Likewise.
(gfc_gobble_whitespace): Likewise.
* symbol.cc (gfc_find_symtree_in_proc): Likewise.
* target-memory.cc (size_integer): Likewise.
(size_complex): Likewise.
* trans-array.cc: Likewise.
* trans-decl.cc (gfc_set_decl_assembler_name): Likewise.
* trans-types.cc (gfc_get_element_type): Likewise.
(gfc_add_field_to_struct): Likewise.
* trans-types.h (gfc_copy_dt_decls_ifequal): Likewise.
(gfc_return_by_reference): Likewise.
(gfc_is_nodesc_array): Likewise.
* trans.h (gfc_can_put_var_on_stack): Likewise.
---
Bootstrapped and regtested on x86_86-unknown-linux with no regressions.
Ok for trunk?
Cc: fortran@gcc.gnu.org
---
gcc/fortran/arith.cc | 4 +--
gcc/fortran/arith.h | 4 +--
gcc/fortran/array.cc | 8 +++---
gcc/fortran/check.cc | 2 +-
gcc/fortran/cpp.cc | 3 +--
gcc/fortran/cpp.h | 2 +-
gcc/fortran/dependency.cc | 8 +++---
gcc/fortran/dependency.h | 6 ++---
gcc/fortran/expr.cc | 6 ++---
gcc/fortran/gfortran.h | 51 ++++++++++++++++++------------------
gcc/fortran/intrinsic.cc | 6 ++---
gcc/fortran/io.cc | 13 ++-------
gcc/fortran/misc.cc | 2 +-
gcc/fortran/parse.cc | 2 +-
gcc/fortran/parse.h | 2 +-
gcc/fortran/primary.cc | 4 +--
gcc/fortran/resolve.cc | 22 ++++++++--------
gcc/fortran/scanner.cc | 20 +++++++-------
gcc/fortran/symbol.cc | 2 +-
gcc/fortran/target-memory.cc | 6 ++---
gcc/fortran/trans-array.cc | 2 +-
gcc/fortran/trans-decl.cc | 2 +-
gcc/fortran/trans-types.cc | 6 ++---
gcc/fortran/trans-types.h | 6 ++---
gcc/fortran/trans.h | 2 +-
25 files changed, 90 insertions(+), 101 deletions(-)
diff --git a/gcc/fortran/arith.cc b/gcc/fortran/arith.cc
index fc9224ebc5c..55f35ea66be 100644
--- a/gcc/fortran/arith.cc
+++ b/gcc/fortran/arith.cc
@@ -1135,7 +1135,7 @@ compare_complex (gfc_expr *op1, gfc_expr *op2)
strings. We return -1 for a < b, 0 for a == b and 1 for a > b.
We use the processor's default collating sequence. */
-int
+signed char
gfc_compare_string (gfc_expr *a, gfc_expr *b)
{
size_t len, alen, blen, i;
@@ -1162,7 +1162,7 @@ gfc_compare_string (gfc_expr *a, gfc_expr *b)
}
-int
+signed char
gfc_compare_with_Cstring (gfc_expr *a, const char *b, bool case_sensitive)
{
size_t len, alen, blen, i;
diff --git a/gcc/fortran/arith.h b/gcc/fortran/arith.h
index 4a79c985231..8aeb7242166 100644
--- a/gcc/fortran/arith.h
+++ b/gcc/fortran/arith.h
@@ -33,8 +33,8 @@ void gfc_set_model (mpfr_t);
arith gfc_range_check (gfc_expr *);
int gfc_compare_expr (gfc_expr *, gfc_expr *, gfc_intrinsic_op);
-int gfc_compare_string (gfc_expr *, gfc_expr *);
-int gfc_compare_with_Cstring (gfc_expr *, const char *, bool);
+signed char gfc_compare_string (gfc_expr *, gfc_expr *);
+signed char gfc_compare_with_Cstring (gfc_expr *, const char *, bool);
/* Constant folding for gfc_expr trees. */
diff --git a/gcc/fortran/array.cc b/gcc/fortran/array.cc
index bbdb5b392fc..281f95a0a7e 100644
--- a/gcc/fortran/array.cc
+++ b/gcc/fortran/array.cc
@@ -985,7 +985,7 @@ compare_bounds (gfc_expr *bound1, gfc_expr *bound2)
/* Compares two array specifications. They must be constant or deferred
shape. */
-int
+bool
gfc_compare_array_spec (gfc_array_spec *as1, gfc_array_spec *as2)
{
int i;
@@ -1030,7 +1030,7 @@ gfc_compare_array_spec (gfc_array_spec *as1, gfc_array_spec *as2)
use the symbol as an implied-DO iterator. Returns nonzero if a
duplicate was found. */
-static int
+static bool
check_duplicate_iterator (gfc_constructor_base base, gfc_symbol *master)
{
gfc_constructor *c;
@@ -1973,7 +1973,7 @@ is_constant_element (gfc_expr *e)
i=1,100000000) /) will take a while as* opposed to a more clever
function that traverses the expression tree. FIXME. */
-int
+bool
gfc_constant_ac (gfc_expr *e)
{
expand_info expand_save;
@@ -1996,7 +1996,7 @@ gfc_constant_ac (gfc_expr *e)
/* Returns nonzero if an array constructor has been completely
expanded (no iterators) and zero if iterators are present. */
-int
+bool
gfc_expanded_ac (gfc_expr *e)
{
gfc_constructor *c;
diff --git a/gcc/fortran/check.cc b/gcc/fortran/check.cc
index 91d87a1b2c1..e0ca1e8d7ca 100644
--- a/gcc/fortran/check.cc
+++ b/gcc/fortran/check.cc
@@ -1156,7 +1156,7 @@ dim_rank_check (gfc_expr *dim, gfc_expr *array, int allow_assumed)
dimension bi, returning 0 if they are known not to be identical,
and 1 if they are identical, or if this cannot be determined. */
-static int
+static bool
identical_dimen_shape (gfc_expr *a, int ai, gfc_expr *b, int bi)
{
mpz_t a_size, b_size;
diff --git a/gcc/fortran/cpp.cc b/gcc/fortran/cpp.cc
index 364bd0d2a85..9ae8046c4bc 100644
--- a/gcc/fortran/cpp.cc
+++ b/gcc/fortran/cpp.cc
@@ -297,7 +297,7 @@ gfc_cpp_init_options (unsigned int decoded_options_count,
gfc_cpp_option.deferred_opt_count = 0;
}
-int
+bool
gfc_cpp_handle_option (size_t scode, const char *arg, int value ATTRIBUTE_UNUSED)
{
int result = 1;
@@ -749,7 +749,6 @@ gfc_cpp_add_include_path_after (char *path, bool user_supplied)
static void scan_translation_unit_trad (cpp_reader *);
static void account_for_newlines (const unsigned char *, size_t);
-static int dump_macro (cpp_reader *, cpp_hashnode *, void *);
static void print_line (location_t, const char *);
static void maybe_print_line (location_t);
diff --git a/gcc/fortran/cpp.h b/gcc/fortran/cpp.h
index 28673e32aa2..a003d5922d6 100644
--- a/gcc/fortran/cpp.h
+++ b/gcc/fortran/cpp.h
@@ -39,7 +39,7 @@ void gfc_cpp_init (void);
void gfc_cpp_init_options (unsigned int decoded_options_count,
struct cl_decoded_option *decoded_options);
-int gfc_cpp_handle_option(size_t scode, const char *arg, int value);
+bool gfc_cpp_handle_option(size_t scode, const char *arg, int value);
void gfc_cpp_post_options (bool);
diff --git a/gcc/fortran/dependency.cc b/gcc/fortran/dependency.cc
index ab3bd36f74e..dee50cc8926 100644
--- a/gcc/fortran/dependency.cc
+++ b/gcc/fortran/dependency.cc
@@ -921,7 +921,7 @@ gfc_ref_needs_temporary_p (gfc_ref *ref)
}
-static int
+static bool
gfc_is_data_pointer (gfc_expr *e)
{
gfc_ref *ref;
@@ -1091,7 +1091,7 @@ gfc_check_argument_dependency (gfc_expr *other, sym_intent intent,
/* Like gfc_check_argument_dependency, but check all the arguments in ACTUAL.
FNSYM is the function being called, or NULL if not known. */
-int
+bool
gfc_check_fncall_dependency (gfc_expr *other, sym_intent intent,
gfc_symbol *fnsym, gfc_actual_arglist *actual,
gfc_dep_check elemental)
@@ -1137,7 +1137,7 @@ gfc_check_fncall_dependency (gfc_expr *other, sym_intent intent,
e1->ref and e2->ref to determine whether the actually accessed
portions of these variables/arrays potentially overlap. */
-int
+bool
gfc_are_equivalenced_arrays (gfc_expr *e1, gfc_expr *e2)
{
gfc_equiv_list *l;
@@ -2093,7 +2093,7 @@ ref_same_as_full_array (gfc_ref *full_ref, gfc_ref *ref)
there is some kind of overlap.
0 : array references are identical or not overlapping. */
-int
+bool
gfc_dep_resolver (gfc_ref *lref, gfc_ref *rref, gfc_reverse *reverse,
bool identical)
{
diff --git a/gcc/fortran/dependency.h b/gcc/fortran/dependency.h
index 339be76a8d0..81114054eb8 100644
--- a/gcc/fortran/dependency.h
+++ b/gcc/fortran/dependency.h
@@ -32,13 +32,13 @@ enum gfc_dep_check
bool gfc_ref_needs_temporary_p (gfc_ref *);
bool gfc_full_array_ref_p (gfc_ref *, bool *);
gfc_expr *gfc_get_noncopying_intrinsic_argument (gfc_expr *);
-int gfc_check_fncall_dependency (gfc_expr *, sym_intent, gfc_symbol *,
+bool gfc_check_fncall_dependency (gfc_expr *, sym_intent, gfc_symbol *,
gfc_actual_arglist *, gfc_dep_check);
int gfc_check_dependency (gfc_expr *, gfc_expr *, bool);
int gfc_expr_is_one (gfc_expr *, int);
-int gfc_dep_resolver (gfc_ref *, gfc_ref *, gfc_reverse *,
+bool gfc_dep_resolver (gfc_ref *, gfc_ref *, gfc_reverse *,
bool identical = false);
-int gfc_are_equivalenced_arrays (gfc_expr *, gfc_expr *);
+bool gfc_are_equivalenced_arrays (gfc_expr *, gfc_expr *);
gfc_expr * gfc_discard_nops (gfc_expr *);
diff --git a/gcc/fortran/expr.cc b/gcc/fortran/expr.cc
index 69d0b57c688..e095e74d290 100644
--- a/gcc/fortran/expr.cc
+++ b/gcc/fortran/expr.cc
@@ -787,7 +787,7 @@ gfc_copy_ref (gfc_ref *src)
/* Detect whether an expression has any vector index array references. */
-int
+bool
gfc_has_vector_index (gfc_expr *e)
{
gfc_ref *ref;
@@ -877,7 +877,7 @@ gfc_kind_max (gfc_expr *e1, gfc_expr *e2)
/* Returns nonzero if the type is numeric, zero otherwise. */
-static int
+static bool
numeric_type (bt type)
{
return type == BT_COMPLEX || type == BT_REAL || type == BT_INTEGER;
@@ -886,7 +886,7 @@ numeric_type (bt type)
/* Returns nonzero if the typespec is a numeric type, zero otherwise. */
-int
+bool
gfc_numeric_ts (gfc_typespec *ts)
{
return numeric_type (ts->type);
diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h
index 6bd8800ecf8..4cc969d7dc8 100644
--- a/gcc/fortran/gfortran.h
+++ b/gcc/fortran/gfortran.h
@@ -3202,17 +3202,16 @@ void gfc_release_include_path (void);
void gfc_check_include_dirs (bool);
FILE *gfc_open_included_file (const char *, bool, bool);
-int gfc_at_end (void);
-int gfc_at_eof (void);
-int gfc_at_bol (void);
-int gfc_at_eol (void);
+bool gfc_at_end (void);
+bool gfc_at_eof (void);
+bool gfc_at_bol (void);
+bool gfc_at_eol (void);
void gfc_advance_line (void);
-int gfc_check_include (void);
-int gfc_define_undef_line (void);
+bool gfc_define_undef_line (void);
-int gfc_wide_is_printable (gfc_char_t);
-int gfc_wide_is_digit (gfc_char_t);
-int gfc_wide_fits_in_byte (gfc_char_t);
+bool gfc_wide_is_printable (gfc_char_t);
+bool gfc_wide_is_digit (gfc_char_t);
+bool gfc_wide_fits_in_byte (gfc_char_t);
gfc_char_t gfc_wide_tolower (gfc_char_t);
gfc_char_t gfc_wide_toupper (gfc_char_t);
size_t gfc_wide_strlen (const gfc_char_t *);
@@ -3258,7 +3257,7 @@ void gfc_init_2 (void);
void gfc_done_1 (void);
void gfc_done_2 (void);
-int get_c_kind (const char *, CInteropKind_t *);
+signed char get_c_kind (const char *, CInteropKind_t *);
const char *gfc_closest_fuzzy_match (const char *, char **);
static inline void
@@ -3469,7 +3468,7 @@ void gfc_release_symbol (gfc_symbol *&);
gfc_symbol *gfc_new_symbol (const char *, gfc_namespace *);
gfc_symtree* gfc_find_symtree_in_proc (const char *, gfc_namespace *);
int gfc_find_symbol (const char *, gfc_namespace *, int, gfc_symbol **);
-int gfc_find_sym_tree (const char *, gfc_namespace *, int, gfc_symtree **);
+bool gfc_find_sym_tree (const char *, gfc_namespace *, int, gfc_symtree **);
int gfc_get_symbol (const char *, gfc_namespace *, gfc_symbol **);
bool gfc_verify_c_interop (gfc_typespec *);
bool gfc_verify_c_interop_param (gfc_symbol *);
@@ -3549,10 +3548,10 @@ bool gfc_convert_type (gfc_expr *, gfc_typespec *, int);
bool gfc_convert_type_warn (gfc_expr *, gfc_typespec *, int, int,
bool array = false);
bool gfc_convert_chartype (gfc_expr *, gfc_typespec *);
-int gfc_generic_intrinsic (const char *);
-int gfc_specific_intrinsic (const char *);
+bool gfc_generic_intrinsic (const char *);
+bool gfc_specific_intrinsic (const char *);
bool gfc_is_intrinsic (gfc_symbol*, int, locus);
-int gfc_intrinsic_actual_ok (const char *, const bool);
+bool gfc_intrinsic_actual_ok (const char *, const bool);
gfc_intrinsic_sym *gfc_find_function (const char *);
gfc_intrinsic_sym *gfc_find_subroutine (const char *);
gfc_intrinsic_sym *gfc_intrinsic_function_by_id (gfc_isym_id);
@@ -3630,7 +3629,7 @@ void gfc_type_convert_binary (gfc_expr *, int);
bool gfc_is_constant_expr (gfc_expr *);
bool gfc_simplify_expr (gfc_expr *, int);
bool gfc_try_simplify_expr (gfc_expr *, int);
-int gfc_has_vector_index (gfc_expr *);
+bool gfc_has_vector_index (gfc_expr *);
gfc_expr *gfc_get_expr (void);
gfc_expr *gfc_get_array_expr (bt type, int kind, locus *);
@@ -3654,7 +3653,7 @@ gfc_ref* gfc_copy_ref (gfc_ref*);
bool gfc_specification_expr (gfc_expr *);
-int gfc_numeric_ts (gfc_typespec *);
+bool gfc_numeric_ts (gfc_typespec *);
int gfc_kind_max (gfc_expr *, gfc_expr *);
bool gfc_check_conformance (gfc_expr *, gfc_expr *, const char *, ...) ATTRIBUTE_PRINTF_3;
@@ -3718,11 +3717,11 @@ void gfc_resolve (gfc_namespace *);
void gfc_resolve_code (gfc_code *, gfc_namespace *);
void gfc_resolve_blocks (gfc_code *, gfc_namespace *);
void gfc_resolve_formal_arglist (gfc_symbol *);
-int gfc_impure_variable (gfc_symbol *);
-int gfc_pure (gfc_symbol *);
-int gfc_implicit_pure (gfc_symbol *);
+bool gfc_impure_variable (gfc_symbol *);
+bool gfc_pure (gfc_symbol *);
+bool gfc_implicit_pure (gfc_symbol *);
void gfc_unset_implicit_pure (gfc_symbol *);
-int gfc_elemental (gfc_symbol *);
+bool gfc_elemental (gfc_symbol *);
bool gfc_resolve_iterator (gfc_iterator *, bool, bool);
bool find_forall_index (gfc_expr *, gfc_symbol *, int);
bool gfc_resolve_index (gfc_expr *, int);
@@ -3736,8 +3735,8 @@ bool gfc_resolve_intrinsic (gfc_symbol *, locus *);
bool gfc_explicit_interface_required (gfc_symbol *, char *, int);
extern int gfc_do_concurrent_flag;
const char* gfc_lookup_function_fuzzy (const char *, gfc_symtree *);
-int gfc_pure_function (gfc_expr *e, const char **name);
-int gfc_implicit_pure_function (gfc_expr *e);
+bool gfc_pure_function (gfc_expr *e, const char **name);
+bool gfc_implicit_pure_function (gfc_expr *e);
/* array.cc */
@@ -3750,12 +3749,12 @@ bool gfc_set_array_spec (gfc_symbol *, gfc_array_spec *, locus *);
gfc_array_spec *gfc_copy_array_spec (gfc_array_spec *);
bool gfc_resolve_array_spec (gfc_array_spec *, int);
-int gfc_compare_array_spec (gfc_array_spec *, gfc_array_spec *);
+bool gfc_compare_array_spec (gfc_array_spec *, gfc_array_spec *);
void gfc_simplify_iterator_var (gfc_expr *);
bool gfc_expand_constructor (gfc_expr *, bool);
-int gfc_constant_ac (gfc_expr *);
-int gfc_expanded_ac (gfc_expr *);
+bool gfc_constant_ac (gfc_expr *);
+bool gfc_expanded_ac (gfc_expr *);
bool gfc_resolve_character_array_constructor (gfc_expr *);
bool gfc_resolve_array_constructor (gfc_expr *);
bool gfc_check_constructor_type (gfc_expr *);
@@ -3840,7 +3839,7 @@ symbol_attribute gfc_expr_attr (gfc_expr *);
symbol_attribute gfc_caf_attr (gfc_expr *, bool i = false, bool *r = NULL);
match gfc_match_rvalue (gfc_expr **);
match gfc_match_varspec (gfc_expr*, int, bool, bool);
-int gfc_check_digit (char, int);
+bool gfc_check_digit (char, int);
bool gfc_is_function_return_value (gfc_symbol *, gfc_namespace *);
bool gfc_convert_to_structure_constructor (gfc_expr *, gfc_symbol *,
gfc_expr **,
diff --git a/gcc/fortran/intrinsic.cc b/gcc/fortran/intrinsic.cc
index e89131f5a71..1d3702ff313 100644
--- a/gcc/fortran/intrinsic.cc
+++ b/gcc/fortran/intrinsic.cc
@@ -1106,7 +1106,7 @@ gfc_find_subroutine (const char *name)
/* Given a string, figure out if it is the name of a generic intrinsic
function or not. */
-int
+bool
gfc_generic_intrinsic (const char *name)
{
gfc_intrinsic_sym *sym;
@@ -1119,7 +1119,7 @@ gfc_generic_intrinsic (const char *name)
/* Given a string, figure out if it is the name of a specific
intrinsic function or not. */
-int
+bool
gfc_specific_intrinsic (const char *name)
{
gfc_intrinsic_sym *sym;
@@ -1131,7 +1131,7 @@ gfc_specific_intrinsic (const char *name)
/* Given a string, figure out if it is the name of an intrinsic function
or subroutine allowed as an actual argument or not. */
-int
+bool
gfc_intrinsic_actual_ok (const char *name, const bool subroutine_flag)
{
gfc_intrinsic_sym *sym;
diff --git a/gcc/fortran/io.cc b/gcc/fortran/io.cc
index 902aa19f55a..488264de4b4 100644
--- a/gcc/fortran/io.cc
+++ b/gcc/fortran/io.cc
@@ -2010,15 +2010,6 @@ gfc_free_open (gfc_open *open)
free (open);
}
-
-static int
-compare_to_allowed_values (const char *specifier, const char *allowed[],
- const char *allowed_f2003[],
- const char *allowed_gnu[], gfc_char_t *value,
- const char *statement, bool warn, locus *where,
- int *num = NULL);
-
-
static bool
check_open_constraints (gfc_open *open, locus *where);
@@ -2062,12 +2053,12 @@ gfc_resolve_open (gfc_open *open, locus *where)
value if it is not allowed. */
-static int
+static bool
compare_to_allowed_values (const char *specifier, const char *allowed[],
const char *allowed_f2003[],
const char *allowed_gnu[], gfc_char_t *value,
const char *statement, bool warn, locus *where,
- int *num)
+ int *num = NULL)
{
int i;
unsigned int len;
diff --git a/gcc/fortran/misc.cc b/gcc/fortran/misc.cc
index af363472641..270ea817f61 100644
--- a/gcc/fortran/misc.cc
+++ b/gcc/fortran/misc.cc
@@ -387,7 +387,7 @@ gfc_done_2 (void)
/* Returns the index into the table of C interoperable kinds where the
kind with the given name (c_kind_name) was found. */
-int
+signed char
get_c_kind(const char *c_kind_name, CInteropKind_t kinds_table[])
{
int index = 0;
diff --git a/gcc/fortran/parse.cc b/gcc/fortran/parse.cc
index f04fd13cc69..352191e650e 100644
--- a/gcc/fortran/parse.cc
+++ b/gcc/fortran/parse.cc
@@ -4703,7 +4703,7 @@ done:
context that causes it to become redefined. If the symbol is an
iterator, we generate an error message and return nonzero. */
-int
+bool
gfc_check_do_variable (gfc_symtree *st)
{
gfc_state_data *s;
diff --git a/gcc/fortran/parse.h b/gcc/fortran/parse.h
index 013aeaedc03..44b3a5079c0 100644
--- a/gcc/fortran/parse.h
+++ b/gcc/fortran/parse.h
@@ -63,7 +63,7 @@ extern gfc_state_data *gfc_state_stack;
#define gfc_comp_struct(s) \
((s) == COMP_DERIVED || (s) == COMP_STRUCTURE || (s) == COMP_MAP)
-int gfc_check_do_variable (gfc_symtree *);
+bool gfc_check_do_variable (gfc_symtree *);
bool gfc_find_state (gfc_compile_state);
gfc_state_data *gfc_enclosing_unit (gfc_compile_state *);
const char *gfc_ascii_statement (gfc_statement, bool strip_sentinel = false) ;
diff --git a/gcc/fortran/primary.cc b/gcc/fortran/primary.cc
index 19f2e78c8ff..52457cc8277 100644
--- a/gcc/fortran/primary.cc
+++ b/gcc/fortran/primary.cc
@@ -109,10 +109,10 @@ get_kind (int *is_iso_c)
/* Given a character and a radix, see if the character is a valid
digit in that radix. */
-int
+bool
gfc_check_digit (char c, int radix)
{
- int r;
+ bool r;
switch (radix)
{
diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc
index 9202e2f10ad..39074273e95 100644
--- a/gcc/fortran/resolve.cc
+++ b/gcc/fortran/resolve.cc
@@ -1562,7 +1562,7 @@ resolve_structure_cons (gfc_expr *expr, int init)
/* Returns 0 if a symbol was not declared with a type or
attribute declaration statement, nonzero otherwise. */
-static int
+static bool
was_declared (gfc_symbol *sym)
{
symbol_attribute a;
@@ -3066,13 +3066,13 @@ is_external_proc (gfc_symbol *sym)
/* Figure out if a function reference is pure or not. Also set the name
of the function for a potential error message. Return nonzero if the
function is PURE, zero if not. */
-static int
+static bool
pure_stmt_function (gfc_expr *, gfc_symbol *);
-int
+bool
gfc_pure_function (gfc_expr *e, const char **name)
{
- int pure;
+ bool pure;
gfc_component *comp;
*name = NULL;
@@ -3112,7 +3112,7 @@ gfc_pure_function (gfc_expr *e, const char **name)
/* Check if the expression is a reference to an implicitly pure function. */
-int
+bool
gfc_implicit_pure_function (gfc_expr *e)
{
gfc_component *comp = gfc_get_proc_ptr_comp (e);
@@ -3143,7 +3143,7 @@ impure_stmt_fcn (gfc_expr *e, gfc_symbol *sym,
}
-static int
+static bool
pure_stmt_function (gfc_expr *e, gfc_symbol *sym)
{
return gfc_traverse_expr (e, sym, impure_stmt_fcn, 0) ? 0 : 1;
@@ -7524,7 +7524,7 @@ resolve_forall_iterators (gfc_forall_iterator *it)
PRIVATE. The search is recursive if necessary. Returns zero if no
inaccessible components are found, nonzero otherwise. */
-static int
+static bool
derived_inaccessible (gfc_symbol *sym)
{
gfc_component *c;
@@ -16757,7 +16757,7 @@ resolve_data (gfc_data *d)
/* Determines if a variable is not 'pure', i.e., not assignable within a pure
procedure. Returns zero if assignment is OK, nonzero if there is a
problem. */
-int
+bool
gfc_impure_variable (gfc_symbol *sym)
{
gfc_symbol *proc;
@@ -16792,7 +16792,7 @@ gfc_impure_variable (gfc_symbol *sym)
/* Test whether a symbol is pure or not. For a NULL pointer, checks if the
current namespace is inside a pure procedure. */
-int
+bool
gfc_pure (gfc_symbol *sym)
{
symbol_attribute attr;
@@ -16824,7 +16824,7 @@ gfc_pure (gfc_symbol *sym)
checks if the current namespace is implicitly pure. Note that this
function returns false for a PURE procedure. */
-int
+bool
gfc_implicit_pure (gfc_symbol *sym)
{
gfc_namespace *ns;
@@ -16878,7 +16878,7 @@ gfc_unset_implicit_pure (gfc_symbol *sym)
/* Test whether the current procedure is elemental or not. */
-int
+bool
gfc_elemental (gfc_symbol *sym)
{
symbol_attribute attr;
diff --git a/gcc/fortran/scanner.cc b/gcc/fortran/scanner.cc
index fa1d9cba394..cae26a9f2bc 100644
--- a/gcc/fortran/scanner.cc
+++ b/gcc/fortran/scanner.cc
@@ -56,7 +56,7 @@ gfc_directorylist *include_dirs, *intrinsic_modules_dirs;
static gfc_file *file_head, *current_file;
-static int continue_flag, end_flag, gcc_attribute_flag;
+static bool continue_flag, end_flag, gcc_attribute_flag;
/* If !$omp/!$acc occurred in current comment line. */
static int openmp_flag, openacc_flag;
static int continue_count, continue_line;
@@ -86,7 +86,7 @@ static gfc_char_t *last_error_char;
/* Functions dealing with our wide characters (gfc_char_t) and
sequences of such characters. */
-int
+bool
gfc_wide_fits_in_byte (gfc_char_t c)
{
return (c <= UCHAR_MAX);
@@ -98,7 +98,7 @@ wide_is_ascii (gfc_char_t c)
return (gfc_wide_fits_in_byte (c) && ((unsigned char) c & ~0x7f) == 0);
}
-int
+bool
gfc_wide_is_printable (gfc_char_t c)
{
return (gfc_wide_fits_in_byte (c) && ISPRINT ((unsigned char) c));
@@ -116,7 +116,7 @@ gfc_wide_toupper (gfc_char_t c)
return (wide_is_ascii (c) ? (gfc_char_t) TOUPPER((unsigned char) c) : c);
}
-int
+bool
gfc_wide_is_digit (gfc_char_t c)
{
return (c >= '0' && c <= '9');
@@ -518,7 +518,7 @@ gfc_open_included_file (const char *name, bool include_cwd, bool module)
/* Test to see if we're at the end of the main source file. */
-int
+bool
gfc_at_end (void)
{
return end_flag;
@@ -527,7 +527,7 @@ gfc_at_end (void)
/* Test to see if we're at the end of the current file. */
-int
+bool
gfc_at_eof (void)
{
if (gfc_at_end ())
@@ -545,7 +545,7 @@ gfc_at_eof (void)
/* Test to see if we're at the beginning of a new line. */
-int
+bool
gfc_at_bol (void)
{
if (gfc_at_eof ())
@@ -557,7 +557,7 @@ gfc_at_bol (void)
/* Test to see if we're at the end of a line. */
-int
+bool
gfc_at_eol (void)
{
if (gfc_at_eof ())
@@ -702,7 +702,7 @@ skip_comment_line (void)
}
-int
+bool
gfc_define_undef_line (void)
{
char *tmp;
@@ -1803,7 +1803,7 @@ gfc_gobble_whitespace (void)
easily report line and column numbers consistent with other
parts of gfortran. */
-static int
+static bool
load_line (FILE *input, gfc_char_t **pbuf, int *pbuflen, const int *first_char)
{
int c, maxlen, i, preprocessor_flag, buflen = *pbuflen;
diff --git a/gcc/fortran/symbol.cc b/gcc/fortran/symbol.cc
index 49fb37864bd..65860938681 100644
--- a/gcc/fortran/symbol.cc
+++ b/gcc/fortran/symbol.cc
@@ -3210,7 +3210,7 @@ gfc_find_symtree_in_proc (const char* name, gfc_namespace* ns)
any parent namespaces if requested by a nonzero parent_flag.
Returns nonzero if the name is ambiguous. */
-int
+bool
gfc_find_sym_tree (const char *name, gfc_namespace *ns, int parent_flag,
gfc_symtree **result)
{
diff --git a/gcc/fortran/target-memory.cc b/gcc/fortran/target-memory.cc
index 7ce7d736629..8e32c56f479 100644
--- a/gcc/fortran/target-memory.cc
+++ b/gcc/fortran/target-memory.cc
@@ -36,14 +36,14 @@ along with GCC; see the file COPYING3. If not see
/* Calculate the size of an expression. */
-static size_t
+static short unsigned int
size_integer (int kind)
{
return GET_MODE_SIZE (SCALAR_INT_TYPE_MODE (gfc_get_int_type (kind)));
}
-static size_t
+static short unsigned int
size_float (int kind)
{
return GET_MODE_SIZE (SCALAR_FLOAT_TYPE_MODE (gfc_get_real_type (kind)));
@@ -57,7 +57,7 @@ size_complex (int kind)
}
-static size_t
+static short unsigned int
size_logical (int kind)
{
return GET_MODE_SIZE (SCALAR_INT_TYPE_MODE (gfc_get_logical_type (kind)));
diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc
index 514cb057afb..dc84fbaeb20 100644
--- a/gcc/fortran/trans-array.cc
+++ b/gcc/fortran/trans-array.cc
@@ -4931,7 +4931,7 @@ done:
/* Return true if both symbols could refer to the same data object. Does
not take account of aliasing due to equivalence statements. */
-static int
+static bool
symbols_could_alias (gfc_symbol *lsym, gfc_symbol *rsym, bool lsym_pointer,
bool lsym_target, bool rsym_pointer, bool rsym_target)
{
diff --git a/gcc/fortran/trans-decl.cc b/gcc/fortran/trans-decl.cc
index 63515b9072a..ba855c4569e 100644
--- a/gcc/fortran/trans-decl.cc
+++ b/gcc/fortran/trans-decl.cc
@@ -483,7 +483,7 @@ gfc_set_decl_assembler_name (tree decl, tree name)
/* Returns true if a variable of specified size should go on the stack. */
-int
+bool
gfc_can_put_var_on_stack (tree size)
{
unsigned HOST_WIDE_INT low;
diff --git a/gcc/fortran/trans-types.cc b/gcc/fortran/trans-types.cc
index def7552ac67..99a28415cb3 100644
--- a/gcc/fortran/trans-types.cc
+++ b/gcc/fortran/trans-types.cc
@@ -1374,7 +1374,7 @@ gfc_get_element_type (tree type)
/* Returns true if the array sym does not require a descriptor. */
-int
+bool
gfc_is_nodesc_array (gfc_symbol * sym)
{
symbol_attribute *array_attr;
@@ -2451,7 +2451,7 @@ gfc_add_field_to_struct (tree context, tree name, tree type, tree **chain)
the two derived type symbols are "equal", as described
in 4.4.2 and resolved by gfc_compare_derived_types. */
-int
+bool
gfc_copy_dt_decls_ifequal (gfc_symbol *from, gfc_symbol *to,
bool from_gsym)
{
@@ -2940,7 +2940,7 @@ copy_derived_types:
}
-int
+bool
gfc_return_by_reference (gfc_symbol * sym)
{
if (!sym->attr.function)
diff --git a/gcc/fortran/trans-types.h b/gcc/fortran/trans-types.h
index 6a360de69f6..297b93702d8 100644
--- a/gcc/fortran/trans-types.h
+++ b/gcc/fortran/trans-types.h
@@ -88,7 +88,7 @@ tree gfc_get_character_type_len_for_eltype (tree, tree);
tree gfc_sym_type (gfc_symbol *, bool is_bind_c_arg = false);
tree gfc_get_cfi_type (int dimen, bool restricted);
tree gfc_typenode_for_spec (gfc_typespec *, int c = 0);
-int gfc_copy_dt_decls_ifequal (gfc_symbol *, gfc_symbol *, bool);
+bool gfc_copy_dt_decls_ifequal (gfc_symbol *, gfc_symbol *, bool);
tree gfc_get_function_type (gfc_symbol *, gfc_actual_arglist *args = NULL,
const char *fnspec = NULL);
@@ -109,10 +109,10 @@ tree gfc_add_field_to_struct (tree, tree, tree, tree **);
void gfc_finish_type (tree);
/* Some functions have an extra parameter for the return value. */
-int gfc_return_by_reference (gfc_symbol *);
+bool gfc_return_by_reference (gfc_symbol *);
/* Returns true if the array sym does not require a descriptor. */
-int gfc_is_nodesc_array (gfc_symbol *);
+bool gfc_is_nodesc_array (gfc_symbol *);
/* Return the DTYPE for an array. */
tree gfc_get_dtype_rank_type (int, tree);
diff --git a/gcc/fortran/trans.h b/gcc/fortran/trans.h
index bc9035c1717..1ea30156675 100644
--- a/gcc/fortran/trans.h
+++ b/gcc/fortran/trans.h
@@ -664,7 +664,7 @@ void gfc_restore_sym (gfc_symbol *, gfc_saved_var *);
void gfc_set_decl_assembler_name (tree, tree);
/* Returns true if a variable of specified size should go on the stack. */
-int gfc_can_put_var_on_stack (tree);
+bool gfc_can_put_var_on_stack (tree);
/* Set GFC_DECL_SCALAR_* on decl from sym if needed. */
void gfc_finish_decl_attrs (tree, symbol_attribute *);
--
2.38.1
next prev parent reply other threads:[~2022-11-12 23:45 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-12 23:45 [PATCH 0/5] function result decl location; type demotion Bernhard Reutner-Fischer
2022-11-12 23:45 ` [PATCH 1/5] c: Set the locus of the function result decl Bernhard Reutner-Fischer
2022-11-14 21:25 ` Joseph Myers
2022-11-12 23:45 ` [PATCH 2/5] c++: " Bernhard Reutner-Fischer
2022-11-15 23:52 ` Jason Merrill
2022-11-17 8:56 ` Bernhard Reutner-Fischer
2022-11-17 14:53 ` Jason Merrill
2022-11-17 19:02 ` Bernhard Reutner-Fischer
2022-11-17 23:52 ` Jason Merrill
2022-11-18 10:49 ` Bernhard Reutner-Fischer
2022-11-18 16:06 ` Jason Merrill
2022-11-18 18:26 ` Bernhard Reutner-Fischer
2022-11-19 9:56 ` Bernhard Reutner-Fischer
2022-11-20 17:06 ` Bernhard Reutner-Fischer
2022-11-22 20:25 ` Jason Merrill
2022-11-23 15:28 ` Jason Merrill
2022-12-02 19:30 ` Jason Merrill
2022-12-02 19:55 ` Bernhard Reutner-Fischer
2022-11-12 23:45 ` Bernhard Reutner-Fischer [this message]
2022-11-13 10:13 ` [PATCH 3/5] Fortran: Narrow return types [PR78798] Janne Blomqvist
2022-11-13 10:39 ` Bernhard Reutner-Fischer
2022-11-13 20:29 ` Harald Anlauf
2022-11-13 20:29 ` Harald Anlauf
2022-11-13 21:50 ` Bernhard Reutner-Fischer
2023-05-10 16:47 ` [PATCH v2] " Bernhard Reutner-Fischer
2023-05-14 12:27 ` Mikael Morin
2023-05-14 13:04 ` Thomas Koenig
2023-05-14 15:24 ` Bernhard Reutner-Fischer
2023-05-14 18:06 ` Mikael Morin
2023-05-18 19:52 ` Bernhard Reutner-Fischer
2022-11-12 23:45 ` [PATCH 4/5] value-range: Add as_string diagnostics helper Bernhard Reutner-Fischer
2022-11-12 23:55 ` Andrew Pinski
2022-11-17 3:30 ` Jeff Law
2022-11-12 23:45 ` [PATCH 5/5] gimple: Add pass to note possible type demotions; IPA pro/demotion; DO NOT MERGE Bernhard Reutner-Fischer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221112234543.95441-4-aldot@gcc.gnu.org \
--to=rep.dot.nop@gmail.com \
--cc=aldot@gcc.gnu.org \
--cc=fortran@gcc.gnu.org \
--cc=gcc-patches@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).