https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107660
Bug ID: 107660
Summary: Running binaries compiled with g++11 or later produces
different results than g++ version 10 or earlier
Product: gcc
Version: 12.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: t3suzuki at ucsd dot edu
Target Milestone: ---
[gcc version]
$ ./g++ -v
Using built-in specs.
COLLECT_GCC=./g++
COLLECT_LTO_WRAPPER=/home/tomoya-s/gcc-12.2.0/install/libexec/gcc/x86_64-pc-linux-gnu/12.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ./configure --prefix=/home/tomoya-s/gcc-12.2.0/install
--disable-multilib
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.2.0 (GCC)
[the command line that triggers the bug]
% git clone https://github.com/sbeamer/gapbs.git
% cd gapbs
% make bfs
% ./bfs -g 10 -n 1
[the output by using g++-12.2.0 (or g++-11) ]
Generate Time: 0.00282
Build Time: 0.00044
Graph has 1024 nodes and 10496 undirected edges for degree: 10
Source: 204
i 0.00001
td 2 0.00000
td 59 0.00000
e 0.00000
bu 711 0.00003
bu 123 0.00001
bu 0 0.00001
c 0.00000
Trial Time: 0.00017
Average Time: 0.00017
[the output by using g++-10 or earlier or clang++]
Generate Time: 0.00797
Build Time: 0.00102
Graph has 1024 nodes and 10496 undirected edges for degree: 10
Source: 204
i 0.00001
td 15 0.00001
e 0.00000
bu 615 0.00004
bu 264 0.00001
bu 1 0.00001
c 0.00000
td 0 0.00000
Trial Time: 0.00017
Average Time: 0.00017
Of course, the execution time is different.
We expect the numbers 2 and 59 and 711 after td and bu to be the same.
This is because the input and the process itself are the same, and there is no
randomness inside the process (random seed is fixed).
Note that this program uses OpenMP, but even if we disable it, the results will
be different depending on the g++ version as well.