From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by sourceware.org (Postfix) with ESMTPS id B870B3824A81 for ; Tue, 4 Jun 2024 03:20:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B870B3824A81 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux.ibm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linux.ibm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org B870B3824A81 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1717471206; cv=none; b=PWA6liC7Q8QWYWNFRgK3/yqELdH21bl2hhmr9AykRRLghwNKukC55Ywv07/GcQv6Z8QTqtL2xXPUbqxnqGxTvrk6Elst6U803YTtvOuTYrBm1Yjadmtt5q1ZwhP/SGtg68onuz10dyCMDe7KqIwALHPCHy+/O4Wsq8X1u07K18M= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1717471206; c=relaxed/simple; bh=/X1mAALhNMbVb4Bwa5pEMVKF9T7Mf8GatLfeNxUxDfc=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=pV0iiKO/VjWIlIkCyHopOXA5nBjyUicpLBZsbHyOWEwqtvQS3+/RfDnVChCILofIWAllAUQxEy8IikdTDlASSemkAsumDeUYuUzI8x509Et5bwJAD7qPZt0kSmCkwAqIjQSHzO+D9zeCa7NGJJNQT7akVdMMbesgkQr13K23An0= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 45438wpA004547 for ; Tue, 4 Jun 2024 03:20:03 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc : content-transfer-encoding : content-type : date : from : in-reply-to : message-id : mime-version : references : subject : to; s=pp1; bh=bg63yHqNrli/vurSD4H/t3XRYNKXIXrwqPdXw9mNl8g=; b=nHqihBTikXG8Scw+H5SGlBQgkyY67t+KDCAhr6suHJzBGjzI0lgZjD4rvnTe1K9zS4IY xSPOZyAcRajHvOebF0rwqpSfbXChOCvSreCYoMtWxixF7t9QRWMupLrIT412uECTq2pd HV2PXlHgfkicGyEQWMikGyQ0Q6eMJyWtBccF2nQS9niOK41MXtHqr4Vmna/i4bbbxB3Y wP5SoO8eTghidHMNrRGvbEtFbHHbZA0xUoV4Um8eavXmqH4Tzp2ZtQUEcEcJTSVNAxIm /X2JHpYFm4cbOTZ9JimP6pWyG+TJR0Xws/+6faW9jvEY1LxJyT4hH0OxzYMw6QfseX1e Wg== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3yhtker1j0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 04 Jun 2024 03:20:03 +0000 Received: from m0356517.ppops.net (m0356517.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 4543K2XL026970 for ; Tue, 4 Jun 2024 03:20:02 GMT Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3yhtker1hu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 04 Jun 2024 03:20:02 +0000 Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 45412tLT000820; Tue, 4 Jun 2024 03:20:01 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 3ygdytuy2e-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 04 Jun 2024 03:20:01 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 4543Jwgc49676704 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 4 Jun 2024 03:20:00 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id EB6DC20043; Tue, 4 Jun 2024 03:19:57 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id CB0B820040; Tue, 4 Jun 2024 03:19:56 +0000 (GMT) Received: from [9.200.158.244] (unknown [9.200.158.244]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 4 Jun 2024 03:19:56 +0000 (GMT) Message-ID: Date: Tue, 4 Jun 2024 11:19:51 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: [PATCH 06/52] m2: Replace uses of {FLOAT,{,LONG_}DOUBLE}_TYPE_SIZE Content-Language: en-US To: Joseph Myers Cc: gcc-patches@gcc.gnu.org, gaiusmod2@gmail.com References: <1a669daea19f586636a7aba0dce9dd1627ce3459.1717134752.git.linkw@linux.ibm.com> From: "Kewen.Lin" In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-TM-AS-GCONF: 00 X-Proofpoint-GUID: lO0yzDP1Q4_L0izf9Yg-wB_zNqTi-dv8 X-Proofpoint-ORIG-GUID: NK4kkLJxRemdpOoV1XoZQA6IB-eZV5fW X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.650,FMLib:17.12.28.16 definitions=2024-06-03_17,2024-05-30_01,2024-05-17_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 bulkscore=0 priorityscore=1501 impostorscore=0 clxscore=1015 suspectscore=0 adultscore=0 lowpriorityscore=0 mlxlogscore=999 mlxscore=0 spamscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2405010000 definitions=main-2406040025 X-Spam-Status: No, score=-13.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: 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: 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? > > (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; unless there is some special need requiring one different node for ibmlongdouble, then: diff --git a/gcc/m2/gm2-gcc/m2type.cc b/gcc/m2/gm2-gcc/m2type.cc index c808e3e8dbb..5e479e4bbce 100644 --- a/gcc/m2/gm2-gcc/m2type.cc +++ b/gcc/m2/gm2-gcc/m2type.cc @@ -1450,6 +1450,7 @@ build_m2_long_real_node (void) { longreal = make_node (REAL_TYPE); TYPE_PRECISION (longreal) = TYPE_PRECISION (long_double_type_node); + SET_TYPE_MODE (longreal, TYPE_MODE (long_double_type_node)); } else if (M2Options_GetIEEELongDouble ()) longreal = float128_type_node; BR, Kewen