|
From: | Michael Matz |
Subject: | Re: [Tinycc-devel] Annoying new warning |
Date: | Sat, 29 Apr 2017 19:55:18 +0200 (CEST) |
User-agent: | Alpine 2.20 (LSU 67 2015-01-07) |
Hi, On Sat, 29 Apr 2017, Christian Jullien wrote:
No one looking at it? What is the behavior of this test when lower is unitialized?
As the comment above the structure clearly says, this is the layout for x86 only (the x87 80bit long double type). ARMs long double type simply is double itself, and hence these functions are unused on ARM. Well, they would be if there wouldn't be strange code in arm-gen.c that makes use of xfdi conversions when VFP is enabled. That makes no sense, also with VFP there's only support for IEEE double, not for extended double.
So the fix for this would entail ifdefing the XF routines in libtcc1.c, and not using them in the arm backend.
Ciao, Michael.>
From: Christian JULLIEN Subject: [Tinycc-devel] Annoying new warning Date: Thu, 20 Apr 2017 09:29:31 +0200 (CEST) Trying to build mob on RPI I now get this new warning gcc -c ./lib/libtcc1.c -o libtcc1.o -DTCC_TARGET_ARM -Wall -g -O2 -Wdeclaration-after-statement -Wno-pointer-sign -Wno-sign-compare -Wno-unused-result -fno-strict-aliasing -I. -fPIC ./lib/libtcc1.c: In function __fixunsxfdi: ./lib/libtcc1.c:586:26: warning: dl1.l.upper is used uninitialized in this function [-Wuninitialized] if (dl1.l.lower == 0 && dl1.l.upper == 0) ^ unsigned long long __fixunsxfdi (long double a1) { register union ldouble_long dl1; register int exp; register unsigned long long l; dl1.ld = a1; if (dl1.l.lower == 0 && dl1.l.upper == 0) return (0); And union is defined as: /* only for x86 */ union ldouble_long { long double ld; struct { unsigned long long lower; unsigned short upper; } l; };
[Prev in Thread] | Current Thread | [Next in Thread] |