This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] PR libgcc/59714 complex division is surprising on aarch64
On 02/06/2018 08:53 AM, Joseph Myers wrote:
> The files in libgcc/soft-fp must be verbatim copies of the master sources
> in glibc. So you can't make any local changes to them, and if you think
> changes are needed you need to patch things upstream in glibc first, with
> a proper extended explanation of why the fix is needed and why it is safe
> and the appropriate design for the fix. There's nothing at all in this
> patch submission to explain that change.
It is a bug/typo in gcc/libgcc/soft-fp/quad.h when _FP_W_TYPE_SIZE is
64 (for example, on aarch64) .
It looks like a code after line 202 was never used.
% cat -n libgcc/soft-fp/quad.h
...
201
202 #else /* not _FP_W_TYPE_SIZE < 64 */
203 union _FP_UNION_Q
204 {
205 TFtype flt /* __attribute__ ((mode (TF))) */ ;
206 struct *_FP_STRUCT_LAYOUT*
207 {
208 _FP_W_TYPE a, b;
209 } longs;
210 struct *_FP_STRUCT_LAYOUT*
211 {
212 # if __BYTE_ORDER == __BIG_ENDIAN
213 unsigned sign : 1;
214 unsigned exp : _FP_EXPBITS_Q;
215 _FP_W_TYPE frac1 : _FP_FRACBITS_Q - (_FP_IMPLBIT_Q != 0) -
_FP_W_TYPE_SIZE;
216 _FP_W_TYPE frac0 : _FP_W_TYPE_SIZE;
217 # else
218 _FP_W_TYPE frac0 : _FP_W_TYPE_SIZE;
219 _FP_W_TYPE frac1 : _FP_FRACBITS_Q - (_FP_IMPLBIT_Q != 0) -
_FP_W_TYPE_SIZE;
220 unsigned exp : _FP_EXPBITS_Q;
221 unsigned sign : 1;
222 # endif
223 } bits;
224 };
We see 'struct _FP_STRUCT_LAYOUT' is declared twice (in lines 206 and
210) inside union _FP_UNION_Q.
Compiler reports warning.
-Vladimir
P.S.:
gcc/libgcc/soft-fp/ and glibc/soft-fp/ are not synchronized now. For
example:
% diff gcc/libgcc/soft-fp/quad.h glibc/soft-fp/
3c3
< Copyright (C) 1997-2016 Free Software Foundation, Inc.
---
> Copyright (C) 1997-2018 Free Software Foundation, Inc.
96c96
< } bits __attribute__ ((packed));
---
> } bits;