On Fri, Oct 29, 2021 at 01:52:58AM +0200, Bernhard Reutner-Fischer wrote:
> From: Bernhard Reutner-Fischer <[email protected]>
>
> Introduce a helper to construct a user operator from a name and the
> reverse operation, i.e. a helper to construct a name from a user
> operator.
>
> Cc: Jakub Jelinek <[email protected]>
>
> gcc/fortran/ChangeLog:
>
> 2017-10-29 Bernhard Reutner-Fischer <[email protected]>
>
> * gfortran.h (gfc_get_uop_from_name, gfc_get_name_from_uop): Declare.
> * symbol.c (gfc_get_uop_from_name, gfc_get_name_from_uop): Define.
> * module.c (load_omp_udrs): Use them.
> ---
> gcc/fortran/gfortran.h | 2 ++
> gcc/fortran/module.c | 21 +++------------------
> gcc/fortran/symbol.c | 21 +++++++++++++++++++++
> 3 files changed, 26 insertions(+), 18 deletions(-)
>
> diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h
> index 9378b4b8a24..afe9f2354ee 100644
> --- a/gcc/fortran/gfortran.h
> +++ b/gcc/fortran/gfortran.h
> @@ -3399,6 +3399,8 @@ void gfc_delete_symtree (gfc_symtree **, const char *);
> gfc_symtree *gfc_get_unique_symtree (gfc_namespace *);
> gfc_user_op *gfc_get_uop (const char *);
> gfc_user_op *gfc_find_uop (const char *, gfc_namespace *);
> +const char *gfc_get_uop_from_name (const char*);
> +const char *gfc_get_name_from_uop (const char*);
Formatting, space between char and *.
> --- a/gcc/fortran/symbol.c
> +++ b/gcc/fortran/symbol.c
> @@ -3044,6 +3044,27 @@ gfc_find_uop (const char *name, gfc_namespace *ns)
> return (st == NULL) ? NULL : st->n.uop;
> }
>
> +/* Given a name return a string usable as user operator name. */
> +const char *
> +gfc_get_uop_from_name (const char* name) {
Formatting, space before * rather than after it, { should go on next line.
Similarly later.
But most importantly, I really don't like these helpers at all, they
unnecessarily allocate memory of the remaining duration of compilation,
and the second one even uses heap for temporary.
Can't you just fix the real bug and keep the code as it was otherwise
(with XALLOCAVEC etc.)?
And, there should be a testcase...
Jakub