From f1d82734ecfc3fc9913d598871192fd0f3fff536 Mon Sep 17 00:00:00 2001 From: Michael Meissner Date: Tue, 5 May 2020 12:28:48 -0400 Subject: [PATCH] Patch ieee128-lib-patch001b --- gcc/ChangeLog.meissner | 8 ++++++++ gcc/config/rs6000/rs6000.c | 8 +++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner index 98683f43554..332f5ead10b 100644 --- a/gcc/ChangeLog.meissner +++ b/gcc/ChangeLog.meissner @@ -1,3 +1,11 @@ +2020-05-05 Michael Meissner + + (ieee128-lib-patch001b) + PR target/94630 + * config/rs6000/rs6000.c (rs6000_mangle_decl_assembler_name): Do + the mapping for l to f128 when the long double default + is IEEE 128-bit. + 2020-05-05 Michael Meissner Clone branch diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 355aea8628d..abc1b8909eb 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -26326,13 +26326,15 @@ rs6000_globalize_decl_name (FILE * stream, tree decl) library before you can switch the real*16 type at compile time. We use the TARGET_MANGLE_DECL_ASSEMBLER_NAME hook to change this name. We - only do this if the default is that long double is IBM extended double, and - the user asked for IEEE 128-bit. */ + only do this transformation if the __float128 type is enabled. This + prevents us from doing the transformation on older 32-bit parts that might + have enabled using IEEE 128-bit floating point as the default long double + type. */ static tree rs6000_mangle_decl_assembler_name (tree decl, tree id) { - if (!TARGET_IEEEQUAD_DEFAULT && TARGET_IEEEQUAD && TARGET_LONG_DOUBLE_128 + if (TARGET_FLOAT128_TYPE && TARGET_IEEEQUAD && TARGET_LONG_DOUBLE_128 && TREE_CODE (decl) == FUNCTION_DECL && DECL_IS_BUILTIN (decl) ) { size_t len = IDENTIFIER_LENGTH (id); -- 2.11.4.GIT