+2013-10-10 Joseph Myers <joseph@codesourcery.com>
+
+ [BZ #16034]
+ * soft-fp/op-common.h (_FP_NEG): Document input as raw. Do not
+ copy class of input value.
+ * soft-fp/negdf2.c (__negdf2): Use raw unpacking and packing. Do
+ not handle exceptions.
+ * soft-fp/negsf2.c (__negsf2): Likewise.
+ * soft-fp/negtf2.c (__negtf2): Likewise.
+ * sysdeps/sparc/sparc32/soft-fp/q_neg.c (_Q_neg): Likewise.
+
2013-10-09 Joseph Myers <joseph@codesourcery.com>
* soft-fp/op-4.h (_FP_FRAC_DISASSEMBLE_4): Remove trailing
15734, 15735, 15736, 15748, 15749, 15754, 15760, 15797, 15844, 15849,
15855, 15856, 15857, 15859, 15867, 15886, 15887, 15890, 15892, 15893,
15895, 15897, 15905, 15909, 15919, 15921, 15923, 15939, 15963, 15966,
- 15988.
+ 15988, 16034.
* CVE-2012-4412 The strcoll implementation caches indices and rules for
large collation sequences to optimize multiple passes. This cache
DFtype __negdf2(DFtype a)
{
- FP_DECL_EX;
FP_DECL_D(A); FP_DECL_D(R);
DFtype r;
- FP_UNPACK_D(A, a);
+ FP_UNPACK_RAW_D(A, a);
FP_NEG_D(R, A);
- FP_PACK_D(r, R);
- FP_CLEAR_EXCEPTIONS;
- FP_HANDLE_EXCEPTIONS;
+ FP_PACK_RAW_D(r, R);
return r;
}
SFtype __negsf2(SFtype a)
{
- FP_DECL_EX;
FP_DECL_S(A); FP_DECL_S(R);
SFtype r;
- FP_UNPACK_S(A, a);
+ FP_UNPACK_RAW_S(A, a);
FP_NEG_S(R, A);
- FP_PACK_S(r, R);
- FP_CLEAR_EXCEPTIONS;
- FP_HANDLE_EXCEPTIONS;
+ FP_PACK_RAW_S(r, R);
return r;
}
TFtype __negtf2(TFtype a)
{
- FP_DECL_EX;
FP_DECL_Q(A); FP_DECL_Q(R);
TFtype r;
- FP_UNPACK_Q(A, a);
+ FP_UNPACK_RAW_Q(A, a);
FP_NEG_Q(R, A);
- FP_PACK_Q(r, R);
- FP_CLEAR_EXCEPTIONS;
- FP_HANDLE_EXCEPTIONS;
+ FP_PACK_RAW_Q(r, R);
return r;
}
/*
- * Main negation routine. FIXME -- when we care about setting exception
- * bits reliably, this will not do. We should examine all of the fp classes.
+ * Main negation routine. The input value is raw.
*/
#define _FP_NEG(fs, wc, R, X) \
do { \
_FP_FRAC_COPY_##wc(R, X); \
- R##_c = X##_c; \
R##_e = X##_e; \
R##_s = 1 ^ X##_s; \
} while (0)
long double _Q_neg(const long double a)
{
- FP_DECL_EX;
long double c = a;
#if (__BYTE_ORDER == __BIG_ENDIAN)
#else
FP_DECL_Q(A); FP_DECL_Q(C);
- FP_UNPACK_Q(A, a);
+ FP_UNPACK_RAW_Q(A, a);
FP_NEG_Q(C, A);
- FP_PACK_Q(c, C);
+ FP_PACK_RAW_Q(c, C);
#endif
- FP_CLEAR_EXCEPTIONS;
- FP_HANDLE_EXCEPTIONS;
return c;
}