diff options
author | Joseph Myers <joseph@codesourcery.com> | 2015-03-07 01:39:42 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2015-03-07 01:39:42 +0000 |
commit | b838844bc5028b2b3401af9f0f51687d8a1f8a54 (patch) | |
tree | bd3df50946aab64591337ea1852a3a39ca36dbd8 /soft-fp/op-2.h | |
parent | e0ed2fb40a0e29c43cf60addc74741dab15f2e05 (diff) | |
download | glibc-b838844bc5028b2b3401af9f0f51687d8a1f8a54.zip glibc-b838844bc5028b2b3401af9f0f51687d8a1f8a54.tar.gz glibc-b838844bc5028b2b3401af9f0f51687d8a1f8a54.tar.bz2 |
soft-fp: Support conditional zero-initialization in declarations.
In the Linux kernel, some architectures have a single function that
uses different kinds of unpacking and packing depending on the
instruction being emulated, meaning it is not readily visible to the
compiler that variables from _FP_DECL and _FP_FRAC_DECL_* macros are
only used in cases where they were initialized. The existing copy of
soft-fp in the Linux kernel uses zero-initialization to avoid warnings
in this case, so while frowned upon as a warning suppression mechanism
in code built for glibc it seems appropriate to have such
zero-initialization conditional on __KERNEL__. This patch duly adds
it, via a macro _FP_ZERO_INIT that expands to empty for non-kernel
compilations.
Tested for powerpc-nofpu that installed stripped shared libraries are
unchanged by this patch.
* soft-fp/soft-fp.h (_FP_ZERO_INIT): New macro. Define depending
on [__KERNEL__].
* soft-fp/op-1.h (_FP_FRAC_DECL_1): Use _FP_ZERO_INIT.
* soft-fp/op-2.h (_FP_FRAC_DECL_2): Likewise.
* soft-fp/op-common.h (_FP_DECL): Likewise.
Diffstat (limited to 'soft-fp/op-2.h')
-rw-r--r-- | soft-fp/op-2.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/soft-fp/op-2.h b/soft-fp/op-2.h index 94a1c71..26bdfc0 100644 --- a/soft-fp/op-2.h +++ b/soft-fp/op-2.h @@ -30,7 +30,8 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ -#define _FP_FRAC_DECL_2(X) _FP_W_TYPE X##_f0, X##_f1 +#define _FP_FRAC_DECL_2(X) \ + _FP_W_TYPE X##_f0 _FP_ZERO_INIT, X##_f1 _FP_ZERO_INIT #define _FP_FRAC_COPY_2(D, S) (D##_f0 = S##_f0, D##_f1 = S##_f1) #define _FP_FRAC_SET_2(X, I) __FP_FRAC_SET_2 (X, I) #define _FP_FRAC_HIGH_2(X) (X##_f1) |