rs6000.c (rs6000_mangle_fundamental_type): Mangle IBM extended float format long...
authorDavid Edelsohn <edelsohn@gnu.org>
Sat, 4 Feb 2006 14:18:17 +0000 (14:18 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Sat, 4 Feb 2006 14:18:17 +0000 (09:18 -0500)
        * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Mangle
        IBM extended float format long double as "g" on powerpc*-linux.

Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r110589

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index 75b786b..23e9d84 100644 (file)
@@ -1,3 +1,9 @@
+2006-02-04  David Edelsohn  <edelsohn@gnu.org>
+           Jakub Jelinek  <jakub@redhat.com>
+
+       * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Mangle
+       IBM extended float format long double as "g" on powerpc*-linux.
+
 2006-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
 
        PR target/25926
index bb5e635..c963c64 100644 (file)
@@ -1,7 +1,7 @@
 /* Subroutines used for code generation on IBM RS/6000.
    Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-   2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
-   Inc.
+   2000, 2001, 2002, 2003, 2004, 2005, 2006
+   Free Software Foundation, Inc.
    Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
 
    This file is part of GCC.
@@ -17410,6 +17410,14 @@ rs6000_mangle_fundamental_type (tree type)
   if (type == pixel_type_node) return "u7__pixel";
   if (type == bool_int_type_node) return "U6__booli";
 
+  /* Mangle IBM extended float long double as `g' (__float128) on
+     powerpc*-linux where long-double-64 previously was the default.  */
+  if (TYPE_MAIN_VARIANT (type) == long_double_type_node
+      && TARGET_ELF
+      && TARGET_LONG_DOUBLE_128
+      && !TARGET_IEEEQUAD)
+    return "g";
+
   /* For all other types, use normal C++ mangling.  */
   return NULL;
 }