[PATCH v2] Fortran: Narrow return types [PR78798]
From: Bernhard Reutner-Fischer gcc/fortran/ChangeLog: PR fortran/78798 * array.cc (compare_bounds): Use narrower return type. (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_define_undef_line): Likewise. (gfc_wide_is_printable): Likewise. (gfc_wide_is_digit): Likewise. (gfc_wide_fits_in_byte): 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. And remove unneeded forward declaration. * 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. * 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 without new warnings and regression tested on x86_64-linux with no regressions, OK for trunk? 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 | 48 +++--- gcc/fortran/intrinsic.cc | 6 ++--- gcc/fortran/io.cc | 13 ++- 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/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 +- 21 files changed, 81 insertions(+), 91 deletions(-) diff --git a/gcc/fortran/array.cc b/gcc/fortran/array.cc index be5eb8b6a0f..4b7c1e715bf 100644 --- a/gcc/fortran/array.cc +++ b/gcc/fortran/array.cc @@ -994,7 +994,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; @@ -1039,7 +1039,7 @@ gfc_compare_array_spec (gfc_array_spec *as1, gfc_array_spec *as2) use the symbol as an implied-DO iterator. Return
[PATCH 2/2] Fortran: dump-parse-tree: Mark debug functions with DEBUG_FUNCTION
From: Bernhard Reutner-Fischer gcc/fortran/ChangeLog: * dump-parse-tree.cc (gfc_debug_expr): Remove forward declaration. (debug): Add DEBUG_FUNCTION. (show_code_node): Remove erroneous whitespace. --- Regression tested on x86_64-linux, OK for trunk? --- gcc/fortran/dump-parse-tree.cc | 38 -- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/gcc/fortran/dump-parse-tree.cc b/gcc/fortran/dump-parse-tree.cc index 2380fa04796..644f8f37d63 100644 --- a/gcc/fortran/dump-parse-tree.cc +++ b/gcc/fortran/dump-parse-tree.cc @@ -55,10 +55,8 @@ static void show_typespec (gfc_typespec *); static void show_ref (gfc_ref *); static void show_attr (symbol_attribute *, const char *); -/* Allow dumping of an expression in the debugger. */ -void gfc_debug_expr (gfc_expr *); - -void debug (symbol_attribute *attr) +DEBUG_FUNCTION void +debug (symbol_attribute *attr) { FILE *tmp = dumpfile; dumpfile = stderr; @@ -67,7 +65,8 @@ void debug (symbol_attribute *attr) dumpfile = tmp; } -void debug (gfc_formal_arglist *formal) +DEBUG_FUNCTION void +debug (gfc_formal_arglist *formal) { FILE *tmp = dumpfile; dumpfile = stderr; @@ -80,12 +79,14 @@ void debug (gfc_formal_arglist *formal) dumpfile = tmp; } -void debug (symbol_attribute attr) +DEBUG_FUNCTION void +debug (symbol_attribute attr) { debug (&attr); } -void debug (gfc_expr *e) +DEBUG_FUNCTION void +debug (gfc_expr *e) { FILE *tmp = dumpfile; dumpfile = stderr; @@ -102,7 +103,8 @@ void debug (gfc_expr *e) dumpfile = tmp; } -void debug (gfc_typespec *ts) +DEBUG_FUNCTION void +debug (gfc_typespec *ts) { FILE *tmp = dumpfile; dumpfile = stderr; @@ -111,12 +113,14 @@ void debug (gfc_typespec *ts) dumpfile = tmp; } -void debug (gfc_typespec ts) +DEBUG_FUNCTION void +debug (gfc_typespec ts) { debug (&ts); } -void debug (gfc_ref *p) +DEBUG_FUNCTION void +debug (gfc_ref *p) { FILE *tmp = dumpfile; dumpfile = stderr; @@ -125,7 +129,7 @@ void debug (gfc_ref *p) dumpfile = tmp; } -void +DEBUG_FUNCTION void debug (gfc_namespace *ns) { FILE *tmp = dumpfile; @@ -135,7 +139,7 @@ debug (gfc_namespace *ns) dumpfile = tmp; } -void +DEBUG_FUNCTION void gfc_debug_expr (gfc_expr *e) { FILE *tmp = dumpfile; @@ -147,7 +151,7 @@ gfc_debug_expr (gfc_expr *e) /* Allow for dumping of a piece of code in the debugger. */ -void +DEBUG_FUNCTION void gfc_debug_code (gfc_code *c) { FILE *tmp = dumpfile; @@ -157,7 +161,8 @@ gfc_debug_code (gfc_code *c) dumpfile = tmp; } -void debug (gfc_symbol *sym) +DEBUG_FUNCTION void +debug (gfc_symbol *sym) { FILE *tmp = dumpfile; dumpfile = stderr; @@ -2513,7 +2518,7 @@ show_code_node (int level, gfc_code *c) case EXEC_SYNC_MEMORY: fputs ("SYNC MEMORY ", dumpfile); if (c->expr2 != NULL) - { + { fputs (" stat=", dumpfile); show_expr (c->expr2); } @@ -4031,7 +4036,8 @@ gfc_dump_global_symbols (FILE *f) /* Show an array ref. */ -void debug (gfc_array_ref *ar) +DEBUG_FUNCTION void +debug (gfc_array_ref *ar) { FILE *tmp = dumpfile; dumpfile = stderr; -- 2.30.2
[PATCH 1/2] Fortran: dump-parse-tree attribs: fix unbalanced braces [PR109624]
From: Bernhard Reutner-Fischer gcc/fortran/ChangeLog: PR fortran/109624 * dump-parse-tree.cc (debug): New function for gfc_namespace. (gfc_debug_code): Delete forward declaration. (show_attr): Make sure to print balanced braces. --- (gdb) call debug(gfc_current_ns) Namespace: A-H: (REAL 4) I-N: (INTEGER 4) O-Z: (REAL 4) procedure name = fmodule symtree: 'C_ptr' || symbol: 'c_ptr' type spec : (UNKNOWN 0) attributes: ) There is an open brace missing after "attributes: " Regression tested on x86_64-linux, OK for trunk? --- gcc/fortran/dump-parse-tree.cc | 16 +--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/gcc/fortran/dump-parse-tree.cc b/gcc/fortran/dump-parse-tree.cc index 1fc1f311e84..2380fa04796 100644 --- a/gcc/fortran/dump-parse-tree.cc +++ b/gcc/fortran/dump-parse-tree.cc @@ -125,6 +125,16 @@ void debug (gfc_ref *p) dumpfile = tmp; } +void +debug (gfc_namespace *ns) +{ + FILE *tmp = dumpfile; + dumpfile = stderr; + show_namespace (ns); + fputc ('\n', dumpfile); + dumpfile = tmp; +} + void gfc_debug_expr (gfc_expr *e) { @@ -136,7 +146,6 @@ gfc_debug_expr (gfc_expr *e) } /* Allow for dumping of a piece of code in the debugger. */ -void gfc_debug_code (gfc_code *c); void gfc_debug_code (gfc_code *c) @@ -758,12 +767,13 @@ show_expr (gfc_expr *p) static void show_attr (symbol_attribute *attr, const char * module) { + fputc ('(', dumpfile); if (attr->flavor != FL_UNKNOWN) { if (attr->flavor == FL_DERIVED && attr->pdt_template) - fputs (" (PDT-TEMPLATE", dumpfile); + fputs ("PDT-TEMPLATE ", dumpfile); else -fprintf (dumpfile, "(%s ", gfc_code2string (flavors, attr->flavor)); + fprintf (dumpfile, "%s ", gfc_code2string (flavors, attr->flavor)); } if (attr->access != ACCESS_UNKNOWN) fprintf (dumpfile, "%s ", gfc_code2string (access_types, attr->access)); -- 2.30.2
Re: [PATCH 1/2] Fortran: dump-parse-tree attribs: fix unbalanced braces [PR109624]
[re-adding the lists, i hope you don't mind] On Wed, 10 May 2023 18:52:54 +0200 Thomas Koenig wrote: > Hi Bernhard, > > both patches look good to me. Pushed as r14-664-g39f7c0963a9c00 and r14-665-gbdc10c2bfaceb3 Thanks! > > No user impact, so they should have the lowest possible impact :-) > > (And I didn't know about DEBUG_FUNCTION, that could come in handy > later). > > Thanks for the patch! > > Best regards > > Thomas
Re: [PATCH v2 4/7] fortran: use grep instead of fgrep
On Mon, 27 Jun 2022 14:10:36 +0800 Xi Ruoyao wrote: > fgrep has been deprecated in favor of grep -F for a long time, and the > next grep release (3.8 or 4.0) will print a warning of fgrep is used. > Stop using fgrep so we won't see the warning. > > We can't hard code grep -F here or it may break build on hosts w/o GNU > grep. autoconf documentation contains a warning about this issue and > suggest to use AC_PROG_FGREP and $FGREP, but these are too overkill in > the specific case: there is no way "debian" could be interpreted as an > non-trivial regex, so we can use a plain grep here. LGTM but i cannot approve it. I'd say this one is trivial and obvious so you could sneak it in under the "obvious" rule.. Thanks for the patch! > > gcc/fortran/ChangeLog: > > * Make-lang.in: Use grep instead of fgrep. > --- > gcc/fortran/Make-lang.in | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/gcc/fortran/Make-lang.in b/gcc/fortran/Make-lang.in > index 1cb47cb1a52..6eb597d0ca0 100644 > --- a/gcc/fortran/Make-lang.in > +++ b/gcc/fortran/Make-lang.in > @@ -278,7 +278,7 @@ $(DESTDIR)$(man1dir)/$(GFORTRAN_INSTALL_NAME)$(man1ext): > doc/gfortran.1 \ > -chmod a-x $@ > > fortran.uninstall: > - if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i > debian' >/dev/null 2>&1; then \ > + if $(SHELL) -c 'install-info --version | sed 1q | grep -s -v -i debian' > >/dev/null 2>&1; then \ > echo " install-info --delete --info-dir=$(DESTDIR)$(infodir) > $(DESTDIR)$(infodir)/gfortran.info"; \ > install-info --delete --info-dir=$(DESTDIR)$(infodir) > $(DESTDIR)$(infodir)/gfortran.info || : ; \ > else : ; fi; \
Re: [PATCH v2 4/7] fortran: use grep instead of fgrep
On 10.05.23 21:29, Bernhard Reutner-Fischer via Fortran wrote: On Mon, 27 Jun 2022 14:10:36 +0800 Xi Ruoyao wrote: fgrep has been deprecated in favor of grep -F for a long time, and the next grep release (3.8 or 4.0) will print a warning of fgrep is used. Stop using fgrep so we won't see the warning. We can't hard code grep -F here or it may break build on hosts w/o GNU grep. autoconf documentation contains a warning about this issue and suggest to use AC_PROG_FGREP and $FGREP, but these are too overkill in the specific case: there is no way "debian" could be interpreted as an non-trivial regex, so we can use a plain grep here. LGTM but i cannot approve it. I'd say this one is trivial and obvious so you could sneak it in under the "obvious" rule.. I concur, this could also have been obvious. Anyway, OK for trunk, and Thanks for the patch!