From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1005) id 0DEEF3886C5B; Tue, 20 Apr 2021 22:44:51 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0DEEF3886C5B Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Michael Meissner To: gcc-cvs@gcc.gnu.org Subject: [gcc(refs/users/meissner/heads/work049)] Fix nanq functions if long double is IEEE 128-bit on PowerPC. X-Act-Checkin: gcc X-Git-Author: Michael Meissner X-Git-Refname: refs/users/meissner/heads/work049 X-Git-Oldrev: 1710991394431c1ee1be4c02a19b558f391463a5 X-Git-Newrev: 807d8a75d1d46dbe7a9ceef40173200a1635926a Message-Id: <20210420224451.0DEEF3886C5B@sourceware.org> Date: Tue, 20 Apr 2021 22:44:51 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Apr 2021 22:44:51 -0000 https://gcc.gnu.org/g:807d8a75d1d46dbe7a9ceef40173200a1635926a commit 807d8a75d1d46dbe7a9ceef40173200a1635926a Author: Michael Meissner Date: Tue Apr 20 18:44:37 2021 -0400 Fix nanq functions if long double is IEEE 128-bit on PowerPC. gcc/ 2021-04-20 Michael Meissner * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long double is IEEE-128 map the nanq built-in functions to the long double function, not the f128 function. Diff: --- gcc/config/rs6000/rs6000-c.c | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/gcc/config/rs6000/rs6000-c.c b/gcc/config/rs6000/rs6000-c.c index 0f8a629ff5a..ae4c61287d8 100644 --- a/gcc/config/rs6000/rs6000-c.c +++ b/gcc/config/rs6000/rs6000-c.c @@ -686,15 +686,32 @@ rs6000_cpu_cpp_builtins (cpp_reader *pfile) builtin_define ("__builtin_vsx_xvnmsubmsp=__builtin_vsx_xvnmsubsp"); } - /* Map the old _Float128 'q' builtins into the new 'f128' builtins. */ + /* Map the old _Float128 'q' builtins into the new 'f128' builtins if long + double is IBM or 64-bit. + + However, if long double is IEEE 128-bit, map both sets of built-in + functions to the normal long double version. This shows up in nansf128 + vs. nanf128. */ if (TARGET_FLOAT128_TYPE) { - builtin_define ("__builtin_fabsq=__builtin_fabsf128"); - builtin_define ("__builtin_copysignq=__builtin_copysignf128"); - builtin_define ("__builtin_nanq=__builtin_nanf128"); - builtin_define ("__builtin_nansq=__builtin_nansf128"); - builtin_define ("__builtin_infq=__builtin_inff128"); - builtin_define ("__builtin_huge_valq=__builtin_huge_valf128"); + if (FLOAT128_IEEE_P (TFmode)) + { + builtin_define ("__builtin_fabsq=__builtin_fabsl"); + builtin_define ("__builtin_copysignq=__builtin_copysignl"); + builtin_define ("__builtin_nanq=__builtin_nanl"); + builtin_define ("__builtin_nansq=__builtin_nansl"); + builtin_define ("__builtin_infq=__builtin_infl"); + builtin_define ("__builtin_huge_valq=__builtin_huge_vall"); + } + else + { + builtin_define ("__builtin_fabsq=__builtin_fabsf128"); + builtin_define ("__builtin_copysignq=__builtin_copysignf128"); + builtin_define ("__builtin_nanq=__builtin_nanf128"); + builtin_define ("__builtin_nansq=__builtin_nansf128"); + builtin_define ("__builtin_infq=__builtin_inff128"); + builtin_define ("__builtin_huge_valq=__builtin_huge_valf128"); + } } /* Tell users they can use __builtin_bswap{16,64}. */