&& (TYPE_MAIN_VARIANT (return_type)
== long_double_type_node))))
rs6000_passes_long_double = true;
-
- /* Note if we passed or return a IEEE 128-bit type. We changed
- the mangling for these types, and we may need to make an alias
- with the old mangling. */
- if (FLOAT128_IEEE_P (return_mode))
- rs6000_passes_ieee128 = true;
}
if (ALTIVEC_OR_VSX_VECTOR_MODE (return_mode))
rs6000_passes_vector = true;
|| (type != NULL
&& TYPE_MAIN_VARIANT (type) == long_double_type_node)))
rs6000_passes_long_double = true;
-
- /* Note if we passed or return a IEEE 128-bit type. We changed the
- mangling for these types, and we may need to make an alias with
- the old mangling. */
- if (FLOAT128_IEEE_P (mode))
- rs6000_passes_ieee128 = true;
}
if (named && ALTIVEC_OR_VSX_VECTOR_MODE (mode))
rs6000_passes_vector = true;
of this machine mode. */
scalar_int_mode rs6000_pmode;
-#if TARGET_ELF
-/* Note whether IEEE 128-bit floating point was passed or returned, either as
- the __float128/_Float128 explicit type, or when long double is IEEE 128-bit
- floating point. We changed the default C++ mangling for these types and we
- may want to generate a weak alias of the old mangling (U10__float128) to the
- new mangling (u9__ieee128). */
-bool rs6000_passes_ieee128 = false;
-#endif
-
/* Track use of r13 in 64bit AIX TLS. */
static bool xcoff_tls_exec_model_detected = false;
-/* Generate the manged name (i.e. U10__float128) used in GCC 8.1, and not the
- name used in current releases (i.e. u9__ieee128). */
-static bool ieee128_mangling_gcc_8_1;
-
/* Width in bits of a pointer. */
unsigned rs6000_pointer_size;
#undef TARGET_STARTING_FRAME_OFFSET
#define TARGET_STARTING_FRAME_OFFSET rs6000_starting_frame_offset
-#if TARGET_ELF && RS6000_WEAK
-#undef TARGET_ASM_GLOBALIZE_DECL_NAME
-#define TARGET_ASM_GLOBALIZE_DECL_NAME rs6000_globalize_decl_name
-#endif
-
#undef TARGET_SETJMP_PRESERVES_NONVOLATILE_REGS_P
#define TARGET_SETJMP_PRESERVES_NONVOLATILE_REGS_P hook_bool_void_true
if (SCALAR_FLOAT_TYPE_P (type) && FLOAT128_IBM_P (TYPE_MODE (type)))
return "g";
if (SCALAR_FLOAT_TYPE_P (type) && FLOAT128_IEEE_P (TYPE_MODE (type)))
- return ieee128_mangling_gcc_8_1 ? "U10__float128" : "u9__ieee128";
+ return "u9__ieee128";
if (type == vector_pair_type_node)
return "u13__vector_pair";
}
\f
-/* Create an alias for a mangled name where we have changed the mangling (in
- GCC 8.1, we used U10__float128, and now we use u9__ieee128). This is called
- via the target hook TARGET_ASM_GLOBALIZE_DECL_NAME. */
-
-#if TARGET_ELF && RS6000_WEAK
-static void
-rs6000_globalize_decl_name (FILE * stream, tree decl)
-{
- const char *name = XSTR (XEXP (DECL_RTL (decl), 0), 0);
-
- targetm.asm_out.globalize_label (stream, name);
-
- if (rs6000_passes_ieee128 && name[0] == '_' && name[1] == 'Z')
- {
- tree save_asm_name = DECL_ASSEMBLER_NAME (decl);
- const char *old_name;
-
- ieee128_mangling_gcc_8_1 = true;
- lang_hooks.set_decl_assembler_name (decl);
- old_name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));
- SET_DECL_ASSEMBLER_NAME (decl, save_asm_name);
- ieee128_mangling_gcc_8_1 = false;
-
- if (strcmp (name, old_name) != 0)
- {
- fprintf (stream, "\t.weak %s\n", old_name);
- fprintf (stream, "\t.set %s,%s\n", old_name, name);
- }
- }
-}
-#endif
-
-\f
/* On 64-bit Linux and Freebsd systems, possibly switch the long double library
function names from <foo>l to <foo>f128 if the default long double type is
IEEE 128-bit. Typically, with the C and C++ languages, the standard math.h