about summary refs log tree commit diff
path: root/sysdeps/powerpc/fpu/s_lrint.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/powerpc/fpu/s_lrint.c')
-rw-r--r--sysdeps/powerpc/fpu/s_lrint.c29
1 files changed, 18 insertions, 11 deletions
diff --git a/sysdeps/powerpc/fpu/s_lrint.c b/sysdeps/powerpc/fpu/s_lrint.c
index 75d782ec73..c78fb035bd 100644
--- a/sysdeps/powerpc/fpu/s_lrint.c
+++ b/sysdeps/powerpc/fpu/s_lrint.c
@@ -1,5 +1,5 @@
 /* Round floating-point to integer.  PowerPC version.
-   Copyright (C) 1997 Free Software Foundation, Inc.
+   Copyright (C) 1997,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -17,28 +17,35 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+/* Kludge to avoid decls that will confuse strong_alias below.  */
+#define __lrintf XXX__lrintf
+#define __lrintl XXX__lrintl
+#define lrintf XXXlrintf
+#define lrintl XXXlrintl
+
 #include "math.h"
 
+#undef __lrintf
+#undef __lrintl
+#undef lrintf
+#undef lrintl
+
+
 long int
 __lrint (double x)
 {
-  union {
+  union
+  {
     double d;
-    long int ll[2];
+    int ll[2];
   } u;
   asm ("fctiw %0,%1" : "=f"(u.d) : "f"(x));
   return u.ll[1];
 }
 weak_alias (__lrint, lrint)
 
-/* This code will also work for a 'float' argument.  */
-asm ("\n\
-	.globl __lrintf	\n\
-	.globl lrintf	\n\
-	.weak lrintf	\n\
-	.set __lrintf,__lrint	\n\
-	.set lrintf,__lrint	\n\
-");
+strong_alias (__lrint, __lrintf)
+weak_alias (__lrint, lrintf)
 
 #ifdef NO_LONG_DOUBLE
 strong_alias (__lrint, __lrintl)