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