extern void abort (void); double d = __FLT_MIN__ / 2; int main() { double x = __FLT_MIN__ / 2; if (x != d) abort (); return 0; } This test will SIGFPE on alpha, because we'll emit the constant for X as a float. Obviously this cannot be represented as a normalized number.
Subject: Bug 23941 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-4_0-branch Changes by: rth@gcc.gnu.org 2005-09-19 16:56:24 Modified files: gcc : ChangeLog real.c Added files: gcc/testsuite/gcc.c-torture/execute: pr23941.c Log message: PR 23941 * real.c (exact_real_truncate): Return false if the format cannot represent the number as a normal. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=2.7592.2.431&r2=2.7592.2.432 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/real.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.151&r2=1.151.8.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.c-torture/execute/pr23941.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.2.1
Subject: Bug 23941 CVSROOT: /cvs/gcc Module name: gcc Changes by: rth@gcc.gnu.org 2005-09-19 17:01:41 Modified files: gcc : ChangeLog real.c Added files: gcc/testsuite/gcc.c-torture/execute: pr23941.c Log message: PR 23941 * real.c (exact_real_truncate): Return false if the format cannot represent the number as a normal. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.c-torture/execute/pr23941.c.diff?cvsroot=gcc&r1=1.1&r2=1.2 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.9979&r2=2.9980 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/real.c.diff?cvsroot=gcc&r1=1.157&r2=1.158
Fixed.