public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "burnus at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug fortran/99355] -freal-X-real-Y -freal-Z-real-X promotes Z to Y
Date: Thu, 04 Mar 2021 14:01:18 +0000	[thread overview]
Message-ID: <bug-99355-4-LoQDoyNmf5@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-99355-4@http.gcc.gnu.org/bugzilla/>

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99355

--- Comment #11 from Tobias Burnus <burnus at gcc dot gnu.org> ---
(In reply to Dominique d'Humieres from comment #8)
> r11-7501 changed the output of the test in comment O, is this expected?

(In reply to Dominique d'Humieres from comment #10)
> % gfc pr57871.f90

I am slightly confused. Do you mean the output for this PR's comment 0 has
changed – or the result for the testcase in PR 57871 comment 0?

> % ./a.out
>  kind(1.0_p1)           4 precision(1.0_p1)           6
>  kind(1.0_dp)           8 precision(1.0_dp)          15

Using PR 57871 comment 0, I get exactly the same output as you have with both
gfortran and ifort.

 * * *

> So without option kind(1.0_p1) is 4, should not it be converted to 16 with
> -freal-4-real-16?

Currently, the code handles:
  1.0  = default-kind real
  1.0d0 = default-double-precision-kind real
→ promote

And
  real :: A  → default-kind real
  double precision :: B → default-double-precision real
  real*<kind>      :: C → convert <kind>
  real(kind=<kind> :: D → convert <kind>

The question is what to do about:
  1.0_<kind>

  * * *

However, we cannot completely avoid ambiguity as for
-freal-4-real-8 freal-8-real-16

  integer, parameter :: k1 = kind(1.0) → 8
  real(kind=k1) :: var → kind(8) → 16
  real(kind=4)  :: var → kind(4) → 8

But some issues are unavoidable and all -freal-*-real-* flags should be
avoided, if possible.

 * * *

Seems as if we need to handle in match_real_constant the case default-real-kind
separately from _kind value specified.

Untested:

--- a/gcc/fortran/primary.c
+++ b/gcc/fortran/primary.c
@@ -666,6 +666,25 @@ done:
   if (kind == -1)
     goto cleanup;

+  if (kind == 4)
+    {
+      if (flag_real4_kind == 8)
+       kind = 8;
+      if (flag_real4_kind == 10)
+       kind = 10;
+      if (flag_real4_kind == 16)
+       kind = 16;
+    }
+  else if (kind == 8)
+    {
+      if (flag_real8_kind == 4)
+       kind = 4;
+      if (flag_real8_kind == 10)
+       kind = 10;
+      if (flag_real8_kind == 16)
+       kind = 16;
+    }
+
   switch (exp_char)
     {
     case 'd':

  parent reply	other threads:[~2021-03-04 14:01 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-03  7:00 [Bug fortran/99355] New: " nickpapior at gmail dot com
2021-03-03  7:00 ` [Bug fortran/99355] " nickpapior at gmail dot com
2021-03-03  8:31 ` rguenth at gcc dot gnu.org
2021-03-03  9:16 ` nickpapior at gmail dot com
2021-03-03 14:38 ` burnus at gcc dot gnu.org
2021-03-03 20:39 ` nickpapior at gmail dot com
2021-03-04  7:20 ` cvs-commit at gcc dot gnu.org
2021-03-04  7:20 ` burnus at gcc dot gnu.org
2021-03-04 12:02 ` dominiq at lps dot ens.fr
2021-03-04 12:37 ` burnus at gcc dot gnu.org
2021-03-04 13:03 ` dominiq at lps dot ens.fr
2021-03-04 14:01 ` burnus at gcc dot gnu.org [this message]
2021-03-04 14:13 ` burnus at gcc dot gnu.org
2021-03-04 14:41 ` dominiq at lps dot ens.fr
2021-03-04 16:04 ` burnus at gcc dot gnu.org
2021-03-04 16:24 ` dominiq at lps dot ens.fr
2021-03-04 22:32 ` burnus at gcc dot gnu.org
2021-03-05  9:43 ` cvs-commit at gcc dot gnu.org
2021-03-05  9:46 ` burnus at gcc dot gnu.org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-99355-4-LoQDoyNmf5@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).