On April 22, 2021 9:09:28 PM GMT+02:00, Michael Meissner <meiss...@linux.ibm.com> wrote: >On Wed, Apr 21, 2021 at 10:10:07AM +0200, Tobias Burnus wrote: >> On 20.04.21 08:58, Richard Biener via Fortran wrote: >> >On Mon, Apr 19, 2021 at 9:40 PM Michael Meissner via Fortran >> ><fortran@gcc.gnu.org> wrote: >> Is there any reason to not only send the email to fortran@ _and_ >> gcc-patches@ but sending it to 13 Fortran maintainers explicitly? >(Now >> removed) > >Sorry about that. With PowerPC backend changes, I generally do >explicitly add >the maintainers so things don't get lost. > > >> >>Fix Fortran rounding issues, PR fortran/96983. >> >> >> >>Can I check this change into the GCC trunk? >> >The patch looks fine technically and is definitely an improvement >since the >> >intermediate conversion looks odd. But it might be that the >standard >> >requires such dance though the preceeding cases handled don't seem >to >> >care. I'm thinking of a FP format where round(1.6) == 3 because of >lack >> >of precision but using an intermediate FP format with higher >precision >> >would "correctly" compute 2. >> >> The patched build_round_expr is only called by ANINT / NINT; >> NINT is real → integer; ANINT is real → real >> [And the modified code is only called for NINT, reason: see comment >far below.] >> >> NINT (A[, KIND]) is described (F2018) as "Nearest integer": >> * Result Characteristics. Integer. If KIND is present, the kind type >parameter >> is that specified by the value of KIND; >> otherwise, the kind type parameter is that of default integer type. >> * The result is the integer nearest A, or if there are two >> integers equally near A, the result is whichever such integer has >the greater >> magnitude. >> * Example. NINT (2.783) has the value 3. >> >> ANINT (A[, KIND]) as "Nearest whole number": >> * The result is of type real. If KIND is present, the kind type >parameter is that >> specified by the value of KIND; otherwise, the kind type parameter >is that of A. >> * The result is the integer nearest A, or if there are two integers >equally near A, >> the result is whichever such integer has the greater magnitude. >> * Examples. ANINT (2.783) has the value 3.0. ANINT (−2.783) has the >value −3.0. >> >> >Of course the current code doesn't handle this correctly for the >> >case if llroundf either. >> >>I've not contributed to the Fortran front end before. If the >maintainers like >> >>the patch, can somebody point out if I need to do additional things >to commit >> >>the patch? >> Nothing special: a testcase already exists, committing is done as >usual >> and a PR to update you have as well. > >Given GCC 11 has branched, is it ok to backport the patch to the GCC 11 >branch >as well? I assume it is, since it fixes a regression in the compiler.
Please wait until after 11.1 is released. Thanks, Richard.