diff --git a/ChangeLog b/ChangeLog index 79a09044b7..585c9c2d2e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2016-03-08 Gabriel F. T. Gomes + + * sysdeps/powerpc/bits/fenvinline.h (feraiseexcept): Remove use of %s + operand modifier. + (feclearexcept): Likewise. + 2016-03-08 Carlos Eduardo Seo * 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 4a7b2af6aa..c283ede060 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__ */