Hi Jakub,

Yes, that is what I had in mind. Being German I don't see any problem with the
explanation, but that is better judged by a native English speaker.

Is the send patch hunk intentional where only indentation is changed? I haven't
applied it though.

Thanks for the patch,
        Andre

On Thu, 9 Jan 2025 16:32:42 +0100
Jakub Jelinek <ja...@redhat.com> wrote:

> On Thu, Jan 09, 2025 at 03:28:28PM +0100, Jakub Jelinek wrote:
> > So like this?
>
> Thomas mentioned bad wording in a private mail.  Here is a better patch:
>
> 2025-01-09  Jakub Jelinek  <ja...@redhat.com>
>
>       PR fortran/118337
>       * module.cc (use_iso_fortran_env_module): Add a comment explaining
>       the optimization performed.  Add gcc_checking_assert that i was
>       incremented for all the elements.  Formatting fix.
>
> --- gcc/fortran/module.cc.jj  2025-01-09 08:25:45.648324540 +0100
> +++ gcc/fortran/module.cc     2025-01-09 15:12:07.611842917 +0100
> @@ -7122,6 +7122,13 @@ use_iso_fortran_env_module (void)
>  #include "iso-fortran-env.def"
>      { ISOFORTRANENV_INVALID, NULL, -1234, 0 } };
>
> +  /* We could have used c in the NAMED_{,U}INTCST macros
> +     instead of 0, but then current g++ expands the initialization
> +     as clearing the whole object followed by explicit stores of
> +     all the non-zero elements (over 150), while by using 0s for
> +     the non-constant initializers and initializing them afterwards
> +     g++ will often copy everything from .rodata and then only override
> +     over 30 non-constant ones.  */
>    i = 0;
>  #define NAMED_INTCST(a,b,c,d) symbol[i++].value = c;
>  #define NAMED_UINTCST(a,b,c,d) symbol[i++].value = c;
> @@ -7130,6 +7137,7 @@ use_iso_fortran_env_module (void)
>  #define NAMED_FUNCTION(a,b,c,d) i++;
>  #define NAMED_SUBROUTINE(a,b,c,d) i++;
>  #include "iso-fortran-env.def"
> +  gcc_checking_assert (i == (int) ARRAY_SIZE (symbol) - 1);
>
>    /* Generate the symbol for the module itself.  */
>    mod_symtree = gfc_find_symtree (gfc_current_ns->sym_root, mod);
> @@ -7288,12 +7296,11 @@ use_iso_fortran_env_module (void)
>           break;
>
>  #define NAMED_FUNCTION(a,b,c,d) \
> -             case a:
> +       case a:
>  #include "iso-fortran-env.def"
> -               create_intrinsic_function (symbol[i].name, symbol[i].id,
> mod,
> -                                          INTMOD_ISO_FORTRAN_ENV, false,
> -                                          NULL);
> -               break;
> +         create_intrinsic_function (symbol[i].name, symbol[i].id, mod,
> +                                    INTMOD_ISO_FORTRAN_ENV, false, NULL);
> +         break;
>
>         default:
>           gcc_unreachable ();
>
>
>       Jakub
>


--
Andre Vehreschild * Email: vehre ad gmx dot de

Reply via email to