public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
From: "vries at gcc dot gnu.org" <sourceware-bugzilla@sourceware.org>
To: gdb-prs@sourceware.org
Subject: [Bug fortran/31282] [gdb/fortran] logical type doesn't match documentation of TYPE_CODE_BOOL
Date: Wed, 24 Jan 2024 12:16:30 +0000	[thread overview]
Message-ID: <bug-31282-4717-oRChvVbJlR@http.sourceware.org/bugzilla/> (raw)
In-Reply-To: <bug-31282-4717@http.sourceware.org/bugzilla/>

https://sourceware.org/bugzilla/show_bug.cgi?id=31282

--- Comment #3 from Tom de Vries <vries at gcc dot gnu.org> ---
(In reply to Tom Tromey from comment #1)
> It's also worth considering how hardbool should work.

Ah, interesting, thanks.  I found some explanation here (
https://gcc.gnu.org/onlinedocs/gnat_rm/Hardened-Booleans.html ).

So let's try with this program:
...
with Text_IO; use Text_IO;

procedure hello is
   type HBool is new Boolean;
   for HBool use (0, 1);
   for HBool'Size use 8;
   A : HBool := True;
begin
   Put_Line("Hello world!");
end hello;
...

This dwarf is generated, it's a subrange_type:
...
 <2><168e>: Abbrev Number: 3 (DW_TAG_subrange_type)
    <168f>   DW_AT_lower_bound : 0
    <1690>   DW_AT_upper_bound : 1
    <1691>   DW_AT_name        : hello__hbool
    <1695>   DW_AT_type        : <0x16a7>
 <1><16a7>: Abbrev Number: 5 (DW_TAG_base_type)
    <16a8>   DW_AT_byte_size   : 1
    <16a9>   DW_AT_encoding    : 2      (boolean)
    <16aa>   DW_AT_name        : hello__hboolB
    <16ae>   DW_AT_artificial  : 1
...

Now let's try this change:
...
-   for HBool use (0, 1);
+   for HBool use (0, 2);
...

Also a subrange_type, but with a different basis type.
...
 <2><168a>: Abbrev Number: 3 (DW_TAG_enumeration_type)
    <168b>   DW_AT_name        : hello__hboolB
    <168f>   DW_AT_encoding    : 7      (unsigned)
    <1690>   DW_AT_byte_size   : 1
    <1694>   DW_AT_artificial  : 1
 <3><1698>: Abbrev Number: 4 (DW_TAG_enumerator)
    <1699>   DW_AT_name        : false
    <169d>   DW_AT_const_value : 0
 <3><169e>: Abbrev Number: 4 (DW_TAG_enumerator)
    <169f>   DW_AT_name        : true
    <16a3>   DW_AT_const_value : 2
 <2><16a5>: Abbrev Number: 5 (DW_TAG_subrange_type)
    <16a6>   DW_AT_lower_bound : 0
    <16a7>   DW_AT_upper_bound : 2
    <16a8>   DW_AT_name        : hello__hbool
    <16ac>   DW_AT_type        : <0x168a>
...

Likewise for:
...
-   for HBool use (0, 1);
+   for HBool use (1, 2);
...
which sort of suggests that DW_ATE_boolean means 0/1, but that is contradicted
by the use of DW_ATE_boolean in ifort.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

  parent reply	other threads:[~2024-01-24 12:16 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-23 20:27 [Bug fortran/31282] New: " vries at gcc dot gnu.org
2024-01-24  1:10 ` [Bug fortran/31282] " tromey at sourceware dot org
2024-01-24 11:11 ` vries at gcc dot gnu.org
2024-01-24 12:16 ` vries at gcc dot gnu.org [this message]
2024-01-24 13:49 ` vries at gcc dot gnu.org
2024-01-24 16:58 ` tromey at sourceware dot org
2024-01-25 12:29 ` vries at gcc dot gnu.org
2024-01-25 14:57 ` tromey at sourceware dot 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-31282-4717-oRChvVbJlR@http.sourceware.org/bugzilla/ \
    --to=sourceware-bugzilla@sourceware.org \
    --cc=gdb-prs@sourceware.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).