You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I let sum result printed on each iteration. And adjust REPEAT_FACTOR to 5.
Run dtoa.elf (compiled with -O2)
$ ./dtoa.elf
262390.355982 <= not expected result
262390.355982 <= not expected result
267945.911538
267945.911538
267945.911538
And its final result is correct.
Run dtoa.elf (compiled with -Os)
$ ./dtoa.elf
262390.355982 <= not expected result
262390.355982 <= not expected result
262390.355982 <= not expected result
262390.355982 <= not expected result
262390.355982 <= not expected result
And its final result is wrong. (the result got from every repeat are all wrong)
The main cause is "5555.5555555555555555" transfered to 0.0 on first and second repeat in compiled with -O2.
And always are 0.0 on every repeat in compiled with -Os.
In src/dtoa/libdtoa.c. local variable word0(&rv) in function strtod doesn't be initilized well. It make getting different result on each repeat. If we add word0(&rv) = 0; to intilize word0(&rv) to 0. "5555.5555555555555555" are always transfererd to 0.0. So the result are not expected (compiled with Os or O2).
I am not sure the intilization for word0(&rv) should be added. and "5555.5555555555555555" -> 0.0 is a reasonable value.
Or other issue made...
I let sum result printed on each iteration. And adjust REPEAT_FACTOR to 5.
Run dtoa.elf (compiled with -O2)
$ ./dtoa.elf
262390.355982 <= not expected result
262390.355982 <= not expected result
267945.911538
267945.911538
267945.911538
And its final result is correct.
Run dtoa.elf (compiled with -Os)
$ ./dtoa.elf
262390.355982 <= not expected result
262390.355982 <= not expected result
262390.355982 <= not expected result
262390.355982 <= not expected result
262390.355982 <= not expected result
And its final result is wrong. (the result got from every repeat are all wrong)
The main cause is "5555.5555555555555555" transfered to 0.0 on first and second repeat in compiled with -O2.
And always are 0.0 on every repeat in compiled with -Os.
In src/dtoa/libdtoa.c. local variable
word0(&rv)
in function strtod doesn't be initilized well. It make getting different result on each repeat. If we addword0(&rv) = 0;
to intilizeword0(&rv)
to 0. "5555.5555555555555555" are always transfererd to 0.0. So the result are not expected (compiled with Os or O2).I am not sure the intilization for
word0(&rv)
should be added. and "5555.5555555555555555" -> 0.0 is a reasonable value.Or other issue made...
My gcc version:
Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/11/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-redhat-linux Configured with: ../configure --enable-bootstrap --enable-host-pie --enable-host-bind-now --enable-languages=c,c++,fortran,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.rockylinux.org/ --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --without-isl --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_64=x86-64-v2 --with-arch_32=x86-64 --build=x86_64-redhat-linux --with-build-config=bootstrap-lto --enable-link-serialization=1 Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 11.3.1 20220421 (Red Hat 11.3.1-2) (GCC)
The text was updated successfully, but these errors were encountered: