I sent this in a private mail to Kyryl
but it probably should also be sent to the list.
After '
add
tests for float conversions to u64' I get the following
output:
x86_64 (linux + macos): ok
x86_64 (windows), i386 (linux + windows):
--- 22_floating_point.expect 2020-09-11 19:25:04.775174826
+0200
+++ 22_floating_point.output 2020-09-11 20:54:23.583325674
+0200
@@ -17,6 +17,6 @@
3421
7855
2469
-18446744073709548195
-18446744073709543761
-18446744073709549147
+4294963875
+4294959441
+4294964827
arm, arm64, riscv64:
--- 22_floating_point.expect 2020-09-11 19:49:40.034917990
+0200
+++ 22_floating_point.output 2020-09-11 20:58:33.768829655
+0200
@@ -17,6 +17,6 @@
3421
7855
2469
-18446744073709548195
-18446744073709543761
-18446744073709549147
+0
+0
+0
The test code only works 2 targets. The other 6 are broken now.
Regards,
Herman
On 2020-09-11 13:11, Kyryl Melekhin wrote:
If this is undefined behavior, then this line is straight up also UB.
https://repo.or.cz/tinycc.git/blobdiff/55f8963dfab5c543f7f34589d3ef9d3f2da3db14..310e3b428cfd181b51723276e6563b90d670da06:/tccgen.c
And because that line is UB, then it causes even more bugs down the drain.
At least if the output for this UB matches what other compilers generate
some bugs can be eliminated. But what gets me the most is why doesn't
gcc or clang compiler warn on any of this. Also how come we can't
represent a 32 bit
float in a 64 bit number? On x86_64 we sure can. Then you are citing ISO 17
while we don't even have full support for C11.
пт, 11 сент. 2020 г. в 14:43, Vincent Lefevre <vincent@vinc17.net>:
On 2020-09-11 10:32:06 +0000, Kyryl Melekhin wrote:
I guess I'll explain the bug here as well.
consider this code:
float a = -123.987;
printf("%lu", (unsigned long int)a);
Before the patch output would be 123.
After the patch output would be 18446744073709551493.
There's no bug. That's undefined behavior (see ISO C17, 6.3.1.4)
because -123 is not representable in unsigned long int. So, any
behavior is correct.
--
Vincent Lefèvre <vincent@vinc17.net> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)
_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel