From 405aef9155fb66e280dac82ce521d5d2ea06f2ab Mon Sep 17 00:00:00 2001 From: ayush-varshney Date: Thu, 11 Feb 2021 08:49:58 +0100 Subject: [PATCH] Long double Constant problem --- tccgen.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tccgen.c b/tccgen.c index 2519e62e..a4d3b39e 100644 --- a/tccgen.c +++ b/tccgen.c @@ -3024,7 +3024,7 @@ static void gen_opif(int op) case '-': f1 -= f2; break; case '*': f1 *= f2; break; case '/': - if (f2 == 0.0) { + if (f2 == (f1-f1) ) { union { float f; unsigned u; } x1, x2, y; /* If not in initializer we need to potentially generate FP exceptions at runtime, otherwise we want to fold. */ @@ -3033,7 +3033,7 @@ static void gen_opif(int op) /* the run-time result of 0.0/0.0 on x87, also of other compilers when used to compile the f1 /= f2 below, would be -nan */ x1.f = f1, x2.f = f2; - if (f1 == 0.0) + if (f1 == (f1-f1) ) y.u = 0x7fc00000; /* nan */ else y.u = 0x7f800000; /* infinity */ @@ -8102,7 +8102,7 @@ static void init_putv(init_params *p, CType *type, unsigned long c) else if (sizeof (long double) == sizeof (double)) __asm__("fldl %1\nfstpt %0\n" : "=m" (*ptr) : "m" (vtop->c.ld)); #endif - else if (vtop->c.ld == 0.0) + else if (vtop->c.ld == (f1-f1) ) ; else #endif -- 2.11.4.GIT