Bug#748616: gcc-4.8: [armel] float to double conversion does not silence sNaN
Package: gcc-4.8
Version: 4.8.2-21
Severity: normal
Consider the following code:
#define _GNU_SOURCE
#include <stdio.h>
#include <math.h>
int main (void)
{
float sNaN = __builtin_nansf ("");
double x = (double) sNaN;
return issignaling(x);
}
It returns 1 on armel, but 0 on armel or other architectures. Quoting
the IEEE Std 754 standard:
"Under default exception handling, any operation signaling an invalid
operation exception and for which a floating-point result is to be
delivered shall deliver a quiet NaN."
Given the soft float ARM code ignores exceptions and always provides a
result, a float to double conversion of a signaling NaN should return a
quiet NaN.
-- System Information:
Debian Release: jessie/sid
APT prefers unstable
APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: armel (armv5tel)
Kernel: Linux 3.2.0-4-kirkwood
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Reply to: