From 7e3e369cdfd8ae1811cb4780c69453c3bc62fb58 Mon Sep 17 00:00:00 2001 From: Stephen L Moshier Date: Wed, 9 Sep 1998 16:33:06 -0600 Subject: [PATCH] emit-rtl.c (gen_lowpart_common): Disable optimization of initialized float-int union if the value is a NaN. * emit-rtl.c (gen_lowpart_common): Disable optimization of initialized float-int union if the value is a NaN. From-SVN: r22371 --- gcc/ChangeLog | 5 +++++ gcc/emit-rtl.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 79c7c842378..9dcc189acbb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Wed Sep 9 23:31:36 1998 (Stephen L Moshier) + + * emit-rtl.c (gen_lowpart_common): Disable optimization of + initialized float-int union if the value is a NaN. + Wed Sep 9 23:00:48 1998 Nathan Sidwell * c-lex.c (real_yylex): Don't warn about long long constants if diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index d5ed39205eb..a59437b4103 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -774,6 +774,9 @@ gen_lowpart_common (mode, x) i = INTVAL (x); r = REAL_VALUE_FROM_TARGET_SINGLE (i); + /* Avoid changing the bit pattern of a NaN. */ + if (REAL_VALUE_ISNAN (r)) + return 0; return CONST_DOUBLE_FROM_REAL_VALUE (r, mode); } #else @@ -812,6 +815,8 @@ gen_lowpart_common (mode, x) i[0] = low, i[1] = high; r = REAL_VALUE_FROM_TARGET_DOUBLE (i); + if (REAL_VALUE_ISNAN (r)) + return 0; return CONST_DOUBLE_FROM_REAL_VALUE (r, mode); } #else -- 2.30.2