public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
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
> 


  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).