Я ищу примеры кода, который запускает недетерминизм в GCC или в процессе компиляции Clang.
Одним из ярких примеров является использование __DATE__
макро.
GCC и Clang имеют множество флагов компилятора, чтобы контролировать результат недетерминированные действия внутри компилятора например. -frandom-seed
а также -fno-guess-branch-probability
Есть ли небольшие примеры, на которые влияют эти флаги?
Чтобы быть более точным:
$ c++ main.cpp -o main && shasum main
aabbccddee
$ c++ main.cpp -o main && shasum main
eeddccbbaa
Я ищу примеры кода без макросов, где несколько запусков компилятор привести к различным выходам, но может быть исправлено, например, -frandom-seed
РЕДАКТИРОВАТЬ:
связанные: из НКУ документы:
-fno-guess-branch-probability:
Sometimes gcc will opt to use a randomized model to guess branch probabilities,
when none are available from either profiling feedback (-fprofile-arcs)
or __builtin_expect.
This means that different runs of the compiler on the same program
may produce different object code.
The default is -fguess-branch-probability at levels -O, -O2, -O3, -Os.
Задача ещё не решена.
Других решений пока нет …