From: "Kewen.Lin" <linkw@linux.ibm.com>
To: Gaius Mulley <gaiusmod2@gmail.com>
Cc: Joseph Myers <josmyers@redhat.com>, gcc-patches@gcc.gnu.org
Subject: Re: [PATCH 06/52] m2: Replace uses of {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE
Date: Thu, 6 Jun 2024 13:15:25 +0800 [thread overview]
Message-ID: <1102e056-010b-045b-0c49-ad4804cfb2fa@linux.ibm.com> (raw)
In-Reply-To: <877cf3bha7.fsf@localhost>
Hi Gaius,
on 2024/6/5 22:22, Gaius Mulley wrote:
> "Kewen.Lin" <linkw@linux.ibm.com> writes:
>
>> Hi Joseph and Gaius,
>>
>> on 2024/6/4 02:02, Joseph Myers wrote:
>>> On Sun, 2 Jun 2024, Kewen Lin wrote:
>>>
>>>> diff --git a/gcc/m2/gm2-gcc/m2type.cc b/gcc/m2/gm2-gcc/m2type.cc
>>>> index 571923c08ef..d52cbdf0b99 100644
>>>> --- a/gcc/m2/gm2-gcc/m2type.cc
>>>> +++ b/gcc/m2/gm2-gcc/m2type.cc
>>>> @@ -1420,7 +1420,7 @@ build_m2_short_real_node (void)
>>>> /* Define `REAL'. */
>>>>
>>>> c = make_node (REAL_TYPE);
>>>> - TYPE_PRECISION (c) = FLOAT_TYPE_SIZE;
>>>> + TYPE_PRECISION (c) = TYPE_PRECISION (float_type_node);
>>>> layout_type (c);
>>>> return c;
>>>> }
>>>> @@ -1433,7 +1433,7 @@ build_m2_real_node (void)
>>>> /* Define `REAL'. */
>>>>
>>>> c = make_node (REAL_TYPE);
>>>> - TYPE_PRECISION (c) = DOUBLE_TYPE_SIZE;
>>>> + TYPE_PRECISION (c) = TYPE_PRECISION (double_type_node);
>>>> layout_type (c);
>>>> return c;
>>>> }
>>>> @@ -1447,7 +1447,7 @@ build_m2_long_real_node (void)
>>>> if (M2Options_GetIBMLongDouble ())
>>>> {
>>>> longreal = make_node (REAL_TYPE);
>>>> - TYPE_PRECISION (longreal) = LONG_DOUBLE_TYPE_SIZE;
>>>> + TYPE_PRECISION (longreal) = TYPE_PRECISION (long_double_type_node);
>>>
>>> This looks rather like m2 would still have the same problem the generic
>>> code previously had: going via precision when that might not uniquely
>>> determine the desired machine mode. And so making sure to use the right
>>> machine mode as done when setting up long_double_type_node etc. would be
>>> better than keeping this code copying TYPE_PRECISION and hoping to
>>> determine a machine mode from that. It certainly looks like this code
>>> wants to match float, double and long double, rather than possibly getting
>>> a different mode with possibly the same TYPE_PRECISION.
>>
>> Good point, sorry that I just did a replacement without checking the context.
>> If the above holds (Gaius can confirm or clarify), SET_TYPE_MODE would be
>> also applied here, that is:
>
> Hi Kewen and Joseph,
>
> yes the code is attempting to create nodes SHORTREAL, REAL, LONGREAL
> mapping onto the C float, double, long double nodes.
>
>> diff --git a/gcc/m2/gm2-gcc/m2type.cc b/gcc/m2/gm2-gcc/m2type.cc
>> index d52cbdf0b99..5ff02a18876 100644
>> --- a/gcc/m2/gm2-gcc/m2type.cc
>> +++ b/gcc/m2/gm2-gcc/m2type.cc
>> @@ -1421,6 +1421,7 @@ build_m2_short_real_node (void)
>>
>> c = make_node (REAL_TYPE);
>> TYPE_PRECISION (c) = TYPE_PRECISION (float_type_node);
>> + SET_TYPE_MODE (c, TYPE_MODE (float_type_node));
>> layout_type (c);
>> return c;
>> }
>> @@ -1434,6 +1435,7 @@ build_m2_real_node (void)
>>
>> c = make_node (REAL_TYPE);
>> TYPE_PRECISION (c) = TYPE_PRECISION (double_type_node);
>> + SET_TYPE_MODE (c, TYPE_MODE (double_type_node));
>> layout_type (c);
>> return c;
>> }
>>
>> I'm not sure and curious why the above builds new nodes for short real and
>> real but re-use float128_type_node or long_double_type_node for some cases,
>> some special needs cause the former ones should have separated nodes?
>
> good point - there is no need to create new nodes.
ah, ok, thanks for clarifying!
>
>>> (I don't know if the M2Options_GetIBMLongDouble call would be needed at
>>> all once you use the machine mode for long double in a reliable way, or
>>> whether this code could be further simplified.)
>>
>> long_double_type_node should already take care of ibmlongdouble, IIUC it
>> would be like:
>>
>> @@ -1443,13 +1445,7 @@ build_m2_long_real_node (void)
>> {
>> tree longreal;
>>
>> - /* Define `LONGREAL'. */
>> - if (M2Options_GetIBMLongDouble ())
>> - {
>> - longreal = make_node (REAL_TYPE);
>> - TYPE_PRECISION (longreal) = TYPE_PRECISION (long_double_type_node);
>> - }
>> - else if (M2Options_GetIEEELongDouble ())
>> + if (M2Options_GetIEEELongDouble ())
>> longreal = float128_type_node;
>> else
>> longreal = long_double_type_node;
>
> yes indeed and the above patch is fine, all bootstrapped and regression
> tested on ppc64le (cfarm120). I've also bootstrapped and regression tested
> the following patch on ppc64le and aarch64:
Nice! Looking forward to you pushing this new one (I'm withdrawing the original
patch).
>
> diff --git a/gcc/m2/gm2-gcc/m2type.cc b/gcc/m2/gm2-gcc/m2type.cc
> index 571923c08ef..ce53130e2a9 100644
> --- a/gcc/m2/gm2-gcc/m2type.cc
> +++ b/gcc/m2/gm2-gcc/m2type.cc
> @@ -1415,41 +1415,26 @@ build_m2_char_node (void)
> static tree
> build_m2_short_real_node (void)
> {
> - tree c;
> -
> - /* Define `REAL'. */
> -
> - c = make_node (REAL_TYPE);
> - TYPE_PRECISION (c) = FLOAT_TYPE_SIZE;
> - layout_type (c);
> - return c;
> + /* Define `SHORTREAL'. */
> + layout_type (float_type_node);
It looks that float_type_node, double_type_node, float128_type_node and
long_double_type_node have been called with layout_type when they are
being initialized in function build_common_tree_nodes, maybe we can just
assert their TYPE_SIZE.
BR,
Kewen
> + return float_type_node;
> }
>
> static tree
> build_m2_real_node (void)
> {
> - tree c;
> -
> /* Define `REAL'. */
> -
> - c = make_node (REAL_TYPE);
> - TYPE_PRECISION (c) = DOUBLE_TYPE_SIZE;
> - layout_type (c);
> - return c;
> + layout_type (double_type_node);
> + return double_type_node;
> }
>
> static tree
> build_m2_long_real_node (void)
> {
> tree longreal;
> -
> +
> /* Define `LONGREAL'. */
> - if (M2Options_GetIBMLongDouble ())
> - {
> - longreal = make_node (REAL_TYPE);
> - TYPE_PRECISION (longreal) = LONG_DOUBLE_TYPE_SIZE;
> - }
> - else if (M2Options_GetIEEELongDouble ())
> + if (M2Options_GetIEEELongDouble ())
> longreal = float128_type_node;
> else
> longreal = long_double_type_node;
>
>
> regards,
> Gaius
>
next prev parent reply other threads:[~2024-06-06 5:35 UTC|newest]
Thread overview: 149+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-03 3:00 [PATCH 00/52] Replace {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE with new hook Kewen Lin
2024-06-03 3:00 ` [PATCH 01/52] ada: Replace use of LONG_DOUBLE_TYPE_SIZE Kewen Lin
2024-06-03 8:51 ` Eric Botcazou
2024-06-05 9:32 ` Kewen.Lin
2024-06-03 3:00 ` [PATCH 02/52] d: " Kewen Lin
2024-06-03 8:40 ` Iain Buclaw
2024-06-03 8:57 ` Kewen.Lin
2024-06-03 14:39 ` Iain Buclaw
2024-06-04 3:17 ` [PATCH 02/52 v2] " Kewen.Lin
2024-06-04 11:35 ` Iain Buclaw
2024-06-05 9:32 ` Kewen.Lin
2024-06-03 3:00 ` [PATCH 03/52] fortran: Replace uses of {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE Kewen Lin
2024-06-03 20:01 ` [PATCH 03/52] fortran: Replace uses of {FLOAT, {, LONG_}DOUBLE}_TYPE_SIZE Harald Anlauf
2024-06-03 20:01 ` Harald Anlauf
2024-06-05 9:30 ` Kewen.Lin
2024-06-03 3:00 ` [PATCH 04/52] go: Replace uses of {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE Kewen Lin
2024-06-12 9:33 ` Kewen.Lin
2024-06-12 12:32 ` Ian Lance Taylor
2024-06-25 5:38 ` Kewen.Lin
2024-06-03 3:00 ` [PATCH 05/52] rust: " Kewen Lin
2024-06-12 9:35 ` PING^1 " Kewen.Lin
2024-06-21 1:48 ` PING^2 " Kewen.Lin
2024-06-21 10:17 ` Arthur Cohen
2024-06-21 10:36 ` Kewen.Lin
2024-06-25 5:42 ` Kewen.Lin
2024-06-25 10:14 ` Arthur Cohen
2024-06-03 3:00 ` [PATCH 06/52] m2: " Kewen Lin
2024-06-03 12:42 ` Gaius Mulley
2024-06-03 18:02 ` Joseph Myers
2024-06-04 3:19 ` Kewen.Lin
2024-06-05 14:22 ` Gaius Mulley
2024-06-06 5:15 ` Kewen.Lin [this message]
2024-06-06 18:31 ` Gaius Mulley
2024-06-12 9:31 ` Kewen.Lin
2024-06-15 5:00 ` Gaius Mulley
2024-06-17 6:07 ` Kewen.Lin
2024-06-03 3:00 ` [PATCH 07/52] darwin: Replace use of LONG_DOUBLE_TYPE_SIZE Kewen Lin
2024-06-04 6:21 ` Iain Sandoe
2024-06-05 9:29 ` Kewen.Lin
2024-06-03 3:00 ` [PATCH 08/52] vms: " Kewen Lin
2024-06-12 9:36 ` PING^1 " Kewen.Lin
2024-06-03 3:00 ` [PATCH 09/52] Replace {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE with new hook mode_for_floating_type Kewen Lin
2024-06-03 6:49 ` Richard Biener
2024-06-03 9:36 ` Kewen.Lin
2024-06-03 17:59 ` [PATCH 09/52] Replace {FLOAT, {, LONG_}DOUBLE}_TYPE_SIZE " Joseph Myers
2024-06-04 3:27 ` [PATCH 09/52 v2] " Kewen.Lin
2024-06-25 5:20 ` Kewen.Lin
2024-06-03 3:01 ` [PATCH 10/52] jit: Replace uses of {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE Kewen Lin
2024-06-13 7:14 ` PING^1 " Kewen.Lin
2024-06-13 13:44 ` David Malcolm
2024-06-14 2:16 ` Kewen.Lin
2024-06-24 6:23 ` Kewen.Lin
2024-06-24 22:25 ` David Malcolm
2024-06-03 3:01 ` [PATCH 11/52] arc: Remove macros {FLOAT,DOUBLE,LONG_DOUBLE}_TYPE_SIZE Kewen Lin
2024-06-13 7:14 ` PING^1 " Kewen.Lin
2024-06-03 3:01 ` [PATCH 12/52] bpf: " Kewen Lin
2024-06-13 7:15 ` PING^1 " Kewen.Lin
2024-06-03 3:01 ` [PATCH 13/52] epiphany: " Kewen Lin
2024-06-13 7:15 ` PING^1 " Kewen.Lin
2024-06-03 3:01 ` [PATCH 14/52] fr30: " Kewen Lin
2024-06-03 11:43 ` Nick Clifton
2024-06-03 3:01 ` [PATCH 15/52] frv: " Kewen Lin
2024-06-03 13:31 ` Nick Clifton
2024-06-03 3:01 ` [PATCH 16/52] ft32: " Kewen Lin
2024-06-13 7:15 ` PING^1 " Kewen.Lin
2024-06-03 3:01 ` [PATCH 17/52] gcn: " Kewen Lin
2024-06-03 9:14 ` [PATCH 17/52] gcn: Remove macros {FLOAT, DOUBLE, LONG_DOUBLE}_TYPE_SIZE Andrew Stubbs
2024-06-03 9:41 ` Kewen.Lin
2024-06-03 9:57 ` Jakub Jelinek
2024-06-03 3:01 ` [PATCH 18/52] iq2000: Remove macros {FLOAT,DOUBLE,LONG_DOUBLE}_TYPE_SIZE Kewen Lin
2024-06-03 13:32 ` Nick Clifton
2024-06-03 3:01 ` [PATCH 19/52] lm32: " Kewen Lin
2024-06-13 7:15 ` PING^1 " Kewen.Lin
2024-06-03 3:01 ` [PATCH 20/52] m32c: " Kewen Lin
2024-06-03 13:33 ` Nick Clifton
2024-06-03 3:01 ` [PATCH 21/52] m32r: " Kewen Lin
2024-06-03 13:33 ` Nick Clifton
2024-06-03 3:01 ` [PATCH 22/52] microblaze: " Kewen Lin
2024-06-13 7:16 ` PING^1 " Kewen.Lin
2024-06-13 17:37 ` Michael Eager
2024-06-03 3:01 ` [PATCH 23/52] mmix: " Kewen Lin
2024-06-06 1:41 ` Hans-Peter Nilsson
2024-06-06 2:11 ` Kewen.Lin
2024-06-03 3:01 ` [PATCH 24/52] moxie: " Kewen Lin
2024-06-13 7:16 ` PING^1 " Kewen.Lin
2024-06-03 3:01 ` [PATCH 25/52] msp430: " Kewen Lin
2024-06-03 13:34 ` Nick Clifton
2024-06-03 3:01 ` [PATCH 26/52] nds32: " Kewen Lin
2024-06-13 7:16 ` PING^1 " Kewen.Lin
2024-06-03 3:01 ` [PATCH 27/52] nios2: " Kewen Lin
2024-06-06 16:23 ` Sandra Loosemore
2024-06-03 3:01 ` [PATCH 28/52] nvptx: " Kewen Lin
2024-06-13 7:16 ` PING^1 " Kewen.Lin
2024-06-03 3:01 ` [PATCH 29/52] or1k: " Kewen Lin
2024-06-13 7:16 ` PING^1 " Kewen.Lin
2024-06-20 14:18 ` Stafford Horne
2024-06-03 3:01 ` [PATCH 30/52] pdp11: Remove macro LONG_DOUBLE_TYPE_SIZE Kewen Lin
2024-06-13 7:16 ` PING^1 " Kewen.Lin
2024-06-13 20:07 ` Paul Koning
2024-06-14 3:22 ` [PATCH 30/52 v2] pdp11: Remove macro {FLOAT,DOUBLE,LONG_DOUBLE}_TYPE_SIZE Kewen.Lin
2024-06-14 15:20 ` Paul Koning
2024-06-17 2:01 ` Kewen.Lin
2024-06-17 18:05 ` Paul Koning
2024-06-03 3:01 ` [PATCH 31/52] pru: Remove macros {FLOAT,DOUBLE,LONG_DOUBLE}_TYPE_SIZE Kewen Lin
2024-06-03 15:59 ` Dimitar Dimitrov
2024-06-03 3:01 ` [PATCH 32/52] stormy16: " Kewen Lin
2024-06-03 13:35 ` Nick Clifton
2024-06-03 3:01 ` [PATCH 33/52] visium: " Kewen Lin
2024-06-13 7:17 ` PING^1 " Kewen.Lin
2024-06-03 3:01 ` [PATCH 34/52] xtensa: " Kewen Lin
2024-06-03 21:08 ` augustine.sterling
2024-06-03 3:01 ` [PATCH 35/52] rs6000: New hook implementation rs6000_c_mode_for_floating_type Kewen Lin
2024-06-03 3:01 ` [PATCH 36/52] aarch64: New hook implementation aarch64_c_mode_for_floating_type Kewen Lin
2024-06-03 10:32 ` Richard Sandiford
2024-06-03 3:01 ` [PATCH 37/52] alpha: New hook implementation alpha_c_mode_for_floating_type Kewen Lin
2024-06-13 7:42 ` PING^1 " Kewen.Lin
2024-06-03 3:01 ` [PATCH 38/52] avr: New hook implementation avr_c_mode_for_floating_type Kewen Lin
2024-06-13 7:42 ` PING^1 " Kewen.Lin
2024-06-03 3:01 ` [PATCH 39/52] i386: New hook implementation ix86_c_mode_for_floating_type Kewen Lin
2024-06-03 7:12 ` Uros Bizjak
2024-06-03 3:01 ` [PATCH 40/52] ia64: New hook implementation ia64_c_mode_for_floating_type Kewen Lin
2024-06-13 7:42 ` PING^1 " Kewen.Lin
2024-06-03 3:01 ` [PATCH 41/52] riscv: New hook implementation riscv_c_mode_for_floating_type Kewen Lin
2024-06-03 5:14 ` Kito Cheng
2024-06-03 3:01 ` [PATCH 42/52] rl78: New hook implementation rl78_c_mode_for_floating_type Kewen Lin
2024-06-13 7:42 ` PING^1 " Kewen.Lin
2024-06-13 7:46 ` Richard Biener
2024-06-03 3:01 ` [PATCH 43/52] rx: New hook implementation rx_c_mode_for_floating_type Kewen Lin
2024-06-03 13:36 ` Nick Clifton
2024-06-03 3:01 ` [PATCH 44/52] s390: New hook implementation s390_c_mode_for_floating_type Kewen Lin
2024-06-13 7:43 ` PING^1 " Kewen.Lin
2024-06-14 5:40 ` Andreas Krebbel
2024-06-03 3:01 ` [PATCH 45/52] sh: New hook implementation sh_c_mode_for_floating_type Kewen Lin
2024-06-03 3:16 ` Oleg Endo
2024-06-03 3:01 ` [PATCH 46/52] h8300: New hook implementation h8300_c_mode_for_floating_type Kewen Lin
2024-06-13 7:43 ` PING^1 " Kewen.Lin
2024-06-03 3:01 ` [PATCH 47/52] loongarch: New hook implementation loongarch_c_mode_for_floating_type Kewen Lin
2024-06-04 1:45 ` Lulu Cheng
2024-06-03 3:01 ` [PATCH 48/52] m68k: New hook implementation m68k_c_mode_for_floating_type Kewen Lin
2024-06-13 7:43 ` PING^1 " Kewen.Lin
2024-06-03 3:01 ` [PATCH 49/52] mips: New hook implementation mips_c_mode_for_floating_type Kewen Lin
2024-06-04 1:16 ` YunQiang Su
2024-06-03 3:01 ` [PATCH 50/52] pa: New hook implementation pa_c_mode_for_floating_type Kewen Lin
2024-06-04 18:55 ` John David Anglin
2024-06-03 3:01 ` [PATCH 51/52] sparc: New hook implementation sparc_c_mode_for_floating_type Kewen Lin
2024-06-03 9:02 ` Eric Botcazou
2024-06-03 9:37 ` Kewen.Lin
2024-06-03 3:01 ` [PATCH 52/52] bfin: Rename macros {FLOAT,DOUBLE}_TYPE_SIZE Kewen Lin
2024-06-13 7:43 ` PING^1 " Kewen.Lin
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=1102e056-010b-045b-0c49-ad4804cfb2fa@linux.ibm.com \
--to=linkw@linux.ibm.com \
--cc=gaiusmod2@gmail.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=josmyers@redhat.com \
/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).