aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--sysdeps/powerpc/bits/fenvinline.h16
2 files changed, 16 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 79a0904..585c9c2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2016-03-08 Gabriel F. T. Gomes <gftg@linux.vnet.ibm.com>
+
+ * sysdeps/powerpc/bits/fenvinline.h (feraiseexcept): Remove use of %s
+ operand modifier.
+ (feclearexcept): Likewise.
+
2016-03-08 Carlos Eduardo Seo <cseo@linux.vnet.ibm.com>
* sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_cap_flags): Updated
diff --git a/sysdeps/powerpc/bits/fenvinline.h b/sysdeps/powerpc/bits/fenvinline.h
index 4a7b2af..c283ede 100644
--- a/sysdeps/powerpc/bits/fenvinline.h
+++ b/sysdeps/powerpc/bits/fenvinline.h
@@ -32,8 +32,10 @@
warning when __excepts is not a constant. Otherwise, they mean the
same as just plain 'i'. */
+# if __GNUC_PREREQ(3, 4)
+
/* Inline definition for feraiseexcept. */
-# define feraiseexcept(__excepts) \
+# define feraiseexcept(__excepts) \
(__extension__ ({ \
int __e = __excepts; \
int __ret; \
@@ -42,8 +44,8 @@
&& __e != FE_INVALID) \
{ \
if (__e != 0) \
- __asm__ __volatile__ ("mtfsb1 %s0" \
- : : "i#*X" (__builtin_ffs (__e))); \
+ __asm__ __volatile__ ("mtfsb1 %0" \
+ : : "i#*X" (__builtin_clz (__e))); \
__ret = 0; \
} \
else \
@@ -52,7 +54,7 @@
}))
/* Inline definition for feclearexcept. */
-# define feclearexcept(__excepts) \
+# define feclearexcept(__excepts) \
(__extension__ ({ \
int __e = __excepts; \
int __ret; \
@@ -61,8 +63,8 @@
&& __e != FE_INVALID) \
{ \
if (__e != 0) \
- __asm__ __volatile__ ("mtfsb0 %s0" \
- : : "i#*X" (__builtin_ffs (__e))); \
+ __asm__ __volatile__ ("mtfsb0 %0" \
+ : : "i#*X" (__builtin_clz (__e))); \
__ret = 0; \
} \
else \
@@ -70,6 +72,8 @@
__ret; \
}))
+# endif /* __GNUC_PREREQ(3, 4). */
+
# endif /* !__NO_MATH_INLINES. */
#endif /* __GNUC__ && !_SOFT_FLOAT && !__NO_FPRS__ */