This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] libm fixes for 16-bit targets


Hi,

Attached are a couple of patches to libm to fix warnings when compiling for
16-bit targets.

The first in e_scalb.c calls scalbln instead of scalbn, as 65000 is out of
range for an 'int'.

+#if INT_MAX == 32767
+	if ( fn > 65000.0) return scalbln(x, 65000);
+	if (-fn > 65000.0) return scalbln(x,-65000);
+#else
 	if ( fn > 65000.0) return scalbn(x, 65000);
 	if (-fn > 65000.0) return scalbn(x,-65000);
+#endif

The second in math_config.h (issignalingf_inline) fixes the signed overflow
warning that occurs.

-  return 2 * (ix ^ 0x00400000) > 2u * 0x7fc00000;
+  return 2 * (ix ^ 0x00400000) > 0xFF800000u;

Although I hope I'm not missing something subtle with the mixing of the
types there.

Cheers,
Jon

Attachment: 0002-e_scalb.c-Call-scalbln-instead-of-scalbn-on-16-bit-t.patch
Description: Binary data

Attachment: 0003-math_config.h-Fix-signed-overflow-warning-for-16-bit.patch
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]